gpt4 book ai didi

java - 加密算法最好有java实现

转载 作者:行者123 更新时间:2023-11-30 06:28:28 25 4
gpt4 key购买 nike

我正在寻找可以加密我的 12 字节数据的对称 key 加密方案。如您所见,它不符合 64 位或 128 位边界,我无法使用分组加密算法,而且我不想填充数据,因为我对加密数据的长度有限制。限制是因为我将使用 base 32 将其转换为不能超过 20 个字符的可打印 key 。纯文本具有非常可预测的数据模式,因此加密方案应该能够隐藏它。据我了解,伪随 secret 钥生成是解决此问题的唯一方法,但加密数据的解决方案和解密数据的解决方案不会相互交谈。

最佳答案

为什么不使用 RC4?密文与明文的大小完全相同 - 在您的情况下为 12 个字节。它带有 Java(5 或更高版本)。这是一个例子:

import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import javax.xml.bind.DatatypeConverter;

public class MyArcFour
{
public static void main(String [] args) throws Exception
{
byte [] key = "MYVERYINSECUREKEY".getBytes("ASCII");

String clearText = "123456789012";

Cipher rc4 = Cipher.getInstance("RC4");
SecretKeySpec rc4Key = new SecretKeySpec(key, "RC4");
rc4.init(Cipher.ENCRYPT_MODE, rc4Key);

byte [] cipherText = rc4.update(clearText.getBytes("ASCII"));

System.out.println("clear (ascii) " + clearText);
System.out.println("clear (hex) " + DatatypeConverter.printHexBinary(clearText.getBytes("ASCII")));
System.out.println("cipher (hex) is " + DatatypeConverter.printHexBinary(cipherText));

Cipher rc4Decrypt = Cipher.getInstance("RC4");
rc4Decrypt.init(Cipher.DECRYPT_MODE, rc4Key);
byte [] clearText2 = rc4Decrypt.update(cipherText);

System.out.println("decrypted (clear) is " + new String(clearText2, "ASCII"));
}
}

这会生成以下输出:

clear (ascii)        123456789012
clear (hex) 313233343536373839303132
cipher (hex) is CBFB9A712E55EBD985C8F2DF
decrypted (clear) is 123456789012

当然,您会希望使用比示例中更好(更长、更随机)的 key 。

关于java - 加密算法最好有java实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12523252/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com