Java 加密加密的最佳方法是什么?
对于我的CPSC类,我需要使用caesar密码生成加密代码。就这样了。下一部分是获取加密消息并循环将要添加到加密消息中的secretKey。例如,如果我使用13的移位来加密“Hello!”,它将变成“Uryyb!”。然后我必须把U移一,r移三,y移一,等等。。。这将包含在“Vuzbc!”中。我是一名初学者,所以我不知道所有很酷的技巧和窍门。我所知道的唯一可能的解决方案是获取凯撒密码的结果,并以某种方式索引要添加到结果中的密钥 以下是我目前掌握的代码:Java 加密加密的最佳方法是什么?,java,encryption,vigenere,Java,Encryption,Vigenere,对于我的CPSC类,我需要使用caesar密码生成加密代码。就这样了。下一部分是获取加密消息并循环将要添加到加密消息中的secretKey。例如,如果我使用13的移位来加密“Hello!”,它将变成“Uryyb!”。然后我必须把U移一,r移三,y移一,等等。。。这将包含在“Vuzbc!”中。我是一名初学者,所以我不知道所有很酷的技巧和窍门。我所知道的唯一可能的解决方案是获取凯撒密码的结果,并以某种方式索引要添加到结果中的密钥 以下是我目前掌握的代码: public class Cipher {
public class Cipher {
private int secretKey;
private int superSecretKey;
public static void main(String [] args)
{
Cipher cipher = new Cipher(1);
}
public Cipher(int myKey) {
secretKey = myKey;
}
public String caesarEncrpyt (String s) {
String r = "";
for(int i = 0; i < s.length(); i++) {
char c = (char) (s.charAt(i));
if(Character.isLetter(c)) {
if (Character.isUpperCase(c)) {
r += (char) ('A' + (c - 'A' + secretKey) % 26);
}
else {
r += (char) ('a' + (c - 'a' + secretKey) % 26);
}
}
else {
r += c;
}
}
return r;
}
public String caesarDecrypt (String s) {
String r = "";
for(int i = 0; i < s.length(); i++) {
char c = (char) (s.charAt(i));
if(Character.isLetter(c)) {
if (Character.isUpperCase(c)) {
r += (char) ('A' + (c - 'A' - secretKey) % 26);
}
else {
r += (char) ('a' + (c - 'a' - secretKey) % 26);
}
}
else {
r += c;
}
}
return r;
}
public String augustusEncrypt (String s) {
String r = "";
for(int i = 0; i < s.length(); i++) {
char c = (char) (s.charAt(i));
if(Character.isLetter(c)) {
if (Character.isUpperCase(c)) {
r += (char) ('A' + (c - 'A' + secretKey) % 26);
}
else {
r += (char) ('a' + (c - 'a' + secretKey) % 26);
}
}
else {
r += c;
}
}
return r;
}
公共类密码{
私钥;
私钥;
公共静态void main(字符串[]args)
{
密码=新密码(1);
}
公共密码(int-myKey){
secretKey=myKey;
}
公共字符串CASEARENCRPYT(字符串s){
字符串r=“”;
对于(int i=0;i
Augustussencrypt是caesarEncrypt的复制和粘贴。我一直在移动一些东西,希望找到解决方案。提前感谢
编辑:我可能没有正确地解释这个问题,如果你有问题,我会在这里。编写一个函数,调用它
toDigits
,它将接受一个整数(或一个长整数),并返回一个与输入数字对应的整数数组。toDigits(13)=>{1,3}和toDigits(4834)=>{4,8,3,4},等等
然后编写一个函数encryptChar
,取一个字符和一个int,并用该int对字符进行加密。(encryptChar('e',1)=>'f',encryptChar('a',28)=>c,等等)
然后,您可以循环消息的字符和此数组中的数字,将值传递给encryptChar,并使用结果组装加密消息。在松散的伪代码中:
fn encryptMessage(message, key):
key_array = toDigits(key)
output = ""
for i in length (message):
output.append(encryptChar(message[i], key_array[i % length(key_array)]))
除了加密的最佳实践和约定之外,解决方案很简单 当我们跳出字母表时,字母A-Z和A-Z已经执行了正确的循环,并且您相信它工作正常。您需要做的就是在循环之前添加1 可能是这样的(警告:未测试):
一般来说,加密加密文本是一种不好的做法。它不太可能使任何东西更安全,而且取决于所使用的系统,实际上可能会使事情变得更弱。(显然,这与特定情况无关,尽管这种双重加密显然没有什么更安全的)当你说“循环密钥”时,你的意思是因为键是13,你要把它变成{1,3},如果键是482213,循环就是{4,8,2,2,1,3}?有点难以解释。如果我的secretKey是13,我必须旋转“Hello!”我会把1加到H,然后把3加到e。然后重复到1再加到L。
('A' + ((c+1) - 'A' + secretKey) % 26)