gpt4 book ai didi

javax.crypto.Cipher - 如何获取包含前 128 个 ASCII 字符的密文

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

我需要在 Java 中实现一个方法,该方法采用 AES128 加密字符串。 (我对解密输出不感兴趣。)为了实现这一点,我修改了此处给出的示例。 Java AES 256 encryption

这是我当前的实现。

package com.test.demo;

import java.security.InvalidKeyException;
import java.security.Key;
import java.security.NoSuchAlgorithmException;

import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.spec.SecretKeySpec;
import javax.xml.bind.DatatypeConverter;

import org.apache.commons.codec.binary.Base64;
import org.apache.log4j.Logger;

public class StringEncryptor {

private static final Logger LOGGER = Logger.getLogger(StringEncryptor.class);

public static String getEncryptedString(String input){

if(input == null){
return null;
}

String keyString = "C0BAE23DF8B51807B3E17D21925FADF2";//32 byte string
byte[] keyValue = DatatypeConverter.parseHexBinary(keyString);
Key key = new SecretKeySpec(keyValue, "AES");
Cipher c1 = null;
try {
c1 = Cipher.getInstance("AES");
} catch (NoSuchAlgorithmException | NoSuchPaddingException e) {
LOGGER.error("error getting cypher", e);
return null;
}
try {
c1.init(Cipher.ENCRYPT_MODE, key);
} catch (InvalidKeyException e) {
LOGGER.error("error initalising cypher", e);
return null;
}

byte[] encVal = null;
try {
encVal = c1.doFinal(input.getBytes());
} catch (IllegalBlockSizeException | BadPaddingException e) {
LOGGER.error("error performing encryption", e);
return null;
}
String encryptedValue = Base64.encodeBase64String(encVal);

return encryptedValue;
}
}

问题是,在检查测试输出时,字符串仅包含字符 [a-zA-Z+/]。我希望我的加密字符串包含前 128 个 ASCII 字符的全部范围。

如有任何建议,我将不胜感激。非常感谢。

最佳答案

您正在使用 Base64 对文本进行编码,该文本仅使用 64 个 ASCII 字符。

我不知道有任何流行的编码使用前 128 个字符,因为这意味着使用 ASCII NUL 字符和各种其他控制字符。如果您只需要一个简单的二进制字符串,您可以简单地删除该行

String encryptedValue = Base64.encodeBase64String(encVal);

关于javax.crypto.Cipher - 如何获取包含前 128 个 ASCII 字符的密文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31297917/

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