gpt4 book ai didi

java - 在 inbuild java 1.4 api 中使用 256 位 AES

转载 作者:行者123 更新时间:2023-12-01 17:39:59 26 4
gpt4 key购买 nike

我能够使用 AES 128 进行加密,但 key 长度更长时会失败。

使用 AES 128 的代码如下。

import java.security.*;
import javax.crypto.*;
import javax.crypto.spec.*;
import java.io.*;

/** * 该程序生成一个 AES key ,检索其原始字节,并且 * 然后从 key 字节重新实例化 AES key 。 * 重新实例化的 key 用于初始化 AES 密码 * 加密和解密。 */

public class AES {

/**
* Turns array of bytes into string
*
* @param buf Array of bytes to convert to hex string
* @return Generated hex string
*/
public static String asHex (byte buf[]) {
StringBuffer strbuf = new StringBuffer(buf.length * 2);
int i;

for (i = 0; i < buf.length; i++) {
if (((int) buf[i] & 0xff) < 0x10)
strbuf.append("0");

strbuf.append(Long.toString((int) buf[i] & 0xff, 16));
}

return strbuf.toString();
}

public static void main(String[] args) throws Exception {

String message="This is just an example";

// Get the KeyGenerator

KeyGenerator kgen = KeyGenerator.getInstance("AES");
kgen.init(128); // 192 and 256 bits may not be available


// Generate the secret key specs.
SecretKey skey = kgen.generateKey();
byte[] raw = skey.getEncoded();

SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");


// Instantiate the cipher

Cipher cipher = Cipher.getInstance("AES");

cipher.init(Cipher.ENCRYPT_MODE, skeySpec);

byte[] encrypted =cipher.doFinal("welcome".getBytes());
System.out.println("encrypted string: " + asHex(encrypted));

cipher.init(Cipher.DECRYPT_MODE, skeySpec);
byte[] original =
cipher.doFinal(encrypted);
String originalString = new String(original);
System.out.println("Original string: " +
originalString + " " + asHex(original));
}
}

最佳答案

可能只是您需要升级/更改 Java 版本。由于美国有关加密产品导出的法律,某些版本的 Java 预打包时没有 192/256 位 AES 加密。

尽管如此,128 位对于大多数情况来说已经足够了。另外,不要直接使用此代码,而是考虑使用更高级别的库,例如 Keyczar 。由于多种原因(即 ECB 编码),上面的代码不安全,我不会信任它。

关于java - 在 inbuild java 1.4 api 中使用 256 位 AES,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2100433/

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