我是靠谱客的博主 还单身纸鹤,最近开发中收集的这篇文章主要介绍字符串加密,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

描述

有一种技巧可以对数据进行加密,它使用一个单词作为它的密匙。下面是它的工作原理:首先,选择一个单词作为密匙,如TRAILBLAZERS。如果单词中包含有重复的字母,只保留第1个,其余几个丢弃。现在,修改过的那个单词死于字母表的下面,如下所示:

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

T R A I L B Z E S C D F G H J K M N O P Q U V W X Y

上面其他用字母表中剩余的字母填充完整。在对信息进行加密时,信息中的每个字母被固定于顶上那行,并用下面那行的对应字母一一取代原文的字母(字母字符的大小写状态应该保留)。因此,使用这个密匙,Attack AT DAWN(黎明时攻击)就会被加密为Tpptad TP ITVH。

请实现下述接口,通过指定的密匙和明文得到密文。

详细描述:

接口说明

原型:

voidencrypt(char * key,char * data,char * encrypt);

输入参数:

    char * key:密匙

    char * data:明文

输出参数:

    char * encrypt:密文

返回值:

        void

 

 

知识点 字符串
运行时间限制 10M
内存限制 128
输入

先输入key和要加密的字符串

输出

返回加密后的字符串

样例输入 nihao ni
样例输出 le

import java.util.Scanner;
import java.util.ArrayList;
public class Enrypt {
public static void main(String args[]){
Scanner scanner = new Scanner(System.in);
String str1 = scanner.nextLine();
char [] ch1 = str1.toLowerCase().toCharArray();
String str2 = scanner.next();
char [] ch2 = str2.toCharArray();
scanner.close();
StringBuilder sBuilder = new StringBuilder();
ArrayList<Character> list = new ArrayList<Character>();
for(int i=0; i<ch1.length; i++){
if( !list.contains(ch1[i]) )
list.add(ch1[i]);
}
char [] ch = new char[26];
char temp = 'a';
for(int i=0; i<26; i++){
ch[i] = (char)(temp + i);
if( !list.contains(ch[i]) )
list.add(ch[i]);
}
int x = 0, y = 0;
for(int i=0; i<ch2.length; i++){
if( ch2[i] >='A' && ch2[i] <='Z'){
x = (byte)ch2[i] - 65;
sBuilder.append((char)(list.get(x) -32));
}else{
y = (byte)ch2[i]-97;
sBuilder.append(list.get(y));
}
}
System.out.println(sBuilder);
}
}








最后

以上就是还单身纸鹤为你收集整理的字符串加密的全部内容,希望文章能够帮你解决字符串加密所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(37)

评论列表共有 0 条评论

立即
投稿
返回
顶部