本问题已经有最佳答案,请猛点这里访问。
我需要在Android中进行加密和解密,
现在我使用"aes"算法加密,我得到了一些加密值,比如"?*?1FO??'但我需要这样的输出'38533f4b3f385203f443f283f3f'
谁都知道……
我的加密代码
IvParameterSpec _IVParamSpec = new IvParameterSpec(IV);
SecretKeySpec sks = new SecretKeySpec(KEY,"AES");
cipher.init(Cipher.ENCRYPT_MODE, sks,_IVParamSpec);
/*byte[] bt = new byte[256] ;
bt = hexStringToByteArray(strToDecrypt);*/
//final String decryptedString1 = new String(cipher.doFinal(bt));
//final String decryptedString = new String(cipher.doFinal(strToDecrypt.getBytes("UTF-16LE")));
final String decryptedString2 = new String(cipher.doFinal(Base64.decode(strToDecrypt, Base64.NO_WRAP)));
String StrHex = toHex(decryptedString);
final String decryptedString1 = new String(cipher.doFinal(strToDecrypt.getBytes()));
因此,您正在询问如何在Java中将字节数组转换为十六进制字符串?stackoverflow.com/questions/9655181/…
38533f4b3f852203f443f283f3f是十六进制字符串,未加密。你的原始数据是什么?
@amir例如,如果输入'userid'意味着,我需要像'40d44d0'这样的带有加密AES的输出
@saravanan"40d44d0"不是"userid"的十六进制编码,太短,无法作为加密的"userid"的十六进制编码。你在说什么?请详细描述你想要达到的目标。
如果要将字节数组转换为可作为文本处理的内容,则base64占用的空间小于hex(=base16)。
@ ArtjomB。请你帮我解答一下我的问题stackoverflow.com/questions/43224137/…
使用此包:http://commons.apache.org/proper/commons-codec/它支持转换十六进制字符串,并提供除aes(afaik)之外的各种加密。
好的,我试试……谢谢你的重播
请尝试格式化您的句子,这不是youtube,我们尽量避免使用youtube类型的语言,因为它会使网站变笨。