当前位置: 首页 > 面试题库 >

Java AES 256加密

梅修贤
2023-03-14
问题内容

我有下面的Java代码来加密使用64个字符的密钥的字符串。我的问题是这将是AES-256加密吗?

String keyString = "C0BAE23DF8B51807B3E17D21925FADF273A70181E1D81B8EDE6C76A5C1F1716E";
byte[] keyValue = hexStringToByte(keyString);
Key key = new SecretKeySpec(keyValue, "AES");
Cipher c1 = Cipher.getInstance("AES");
c1.init(Cipher.ENCRYPT_MODE, key);

String data = "Some data to encrypt";
byte[] encVal = c1.doFinal(data.getBytes());
String encryptedValue = Base64.encodeBase64String(encVal);


/* Copied the below code from another post in stackexchange */
public static byte[] hexStringToByte(String hexstr) 
{
  byte[] retVal = new BigInteger(hexstr, 16).toByteArray();
  if (retVal[0] == 0) 
  {
    byte[] newArray = new byte[retVal.length - 1];
    System.arraycopy(retVal, 1, newArray, 0, newArray.length);
    return newArray;
  }
  return retVal;
}

以下是结合了divanov和laz建议的代码。

String keyString = "C0BAE23DF8B51807B3E17D21925FADF273A70181E1D81B8EDE6C76A5C1F1716E";
byte[] keyValue = DatatypeConverter.parseHexBinary(keyString);
Key key = new SecretKeySpec(keyValue, "AES");
Cipher c1 = Cipher.getInstance("AES");
c1.init(Cipher.ENCRYPT_MODE, key);

String data = "Some data to encrypt";
byte[] encVal = c1.doFinal(data.getBytes());
String encryptedValue = Base64.encodeBase64String(encVal);

问题答案:

是的,它将是64个字符,即32个字节和256位,并且256位的任何序列都可以用作AES-256密钥。

我建议您使用DatatypeConverter.parseHexBinary(或您选择的库中的类似实用程序)将十六进制字符串转换为字节数组。



 类似资料:
  • 主要内容:1.对称加密,2.非对称加密,3.混合加密,4.常见的摘要算法1.对称加密 AES,密钥长度有128/256/192。高级加密标准,是下一代的加密算法标准,速度快,安全级别高; DES:密钥为56, 数据加密标准,速度较快,适用于加密大量数据的场合。 3DES: 密钥为168.是基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高。 IDES: 密钥为128 SM1: 密钥为128 SM4: 密钥为128 RC4, RC5, RC6 DESX 两边用

  • 这是一个桌面应用程序,所以我只需要基本的登录安全性,我想使用一个函数来加密密码,另一个函数我从UI传递密码并将其散列保存到db中,然后返回true o false,这取决于匹配与否。 我尝试使用jasypt官方网站的池版本,我可以加密,但我不知道如何解密。 我是安全方面的新手,所以我对安全不太了解,我接受其他建议或替代方案,我只想要一个工作示例。

  • 使用 :X 命令为文件设定一个密码 :X Enter encryption key: ****** Enter same key again: ****** 如果要取消加密,可以设置密码为空 可以禁用交换文件,以免泄密 vim -x -n file.txt 如果你已在经编辑这个文件了,那么交换文件 swapfile 可以用下面的命令禁止: :setlocal noswapfile 由于没了交换文件

  • 本文向大家介绍JS实现的base64加密、md5加密及sha1加密详解,包括了JS实现的base64加密、md5加密及sha1加密详解的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JS实现的base64加密、md5加密及sha1加密。分享给大家供大家参考,具体如下: 1、base64加密 在页面中引入base64.js文件,调用方法为: 2、md5加密 在页面中引用md5.js文件,调用

  • 问题内容: 我正在开发一个android应用程序,因此我需要对它的一方面使用加密。对于使用哪种算法(AES,DES,RSA等),我真的很冷漠。我知道Java有一个加密程序包,但我一点都不熟悉。有人可以发布有关如何执行加密/解密功能的示例吗? 问题答案: 该库中有一个缺陷,它允许侦听器在适当的情况下解密发送的数据包。请参见对Oracle Exploit Tool和Apache MyFaces进行填充

  • 稳定性: 2 - 稳定的 crypto 模块提供了加密功能,包含对 OpenSSL 的哈希、HMAC、加密、解密、签名、以及验证功能的一整套封装。 使用 require('crypto') 来访问该模块。 const crypto = require('crypto'); const secret = 'abcdefg'; const hash = crypto.createHmac('sha2

  • 我在C#程序(我在下面提到)中使用了RSA非对称密钥加密算法,我必须通过java程序加密数据。我希望我的java程序生成与C#程序相同的加密密钥。 公钥: C#加密程序: Java加密方案: 我尝试了上述java程序,但结果如下: O+gw 7+X hY x A 9 ltD V 5 zE RsF 4 Dy Xg MTc/gx 82 wR tT 1 x fR 3 su Y 0 XB JLa dp 7

  • 在本节中,我们将回顾以下安全问题: 生成随机数据 加密和解密 确认数据完整性 生成伪随机数据(Generating Pseudorandom Data) 伪随机数据在很多情况下都很有用。 例如,当通过电子邮件重置密码时, 您需要生成一个令牌,将其保存到数据库中,并通过电子邮件发送给最终用户, 这反过来又会允许他们证明该帐户的所有权。 这个令牌是独一无二且难以猜测的,否则攻击者可能会预测令牌的值并重