如何导出对称加密密钥?

克里斯托弗

我正在尝试javax.crypto通过intnet在我的应用程序之间实现加密。我按照这个(接受的答案):https://stackoverflow.com/questions/4319496/how-to-encrypt-and-decrypt-data-in-java。问题是,我明白我需要有相同的SecretKeySpec key两个我的应用程序以加密/解密数据。我不知道如何导出它(作为字符串或其他任何东西),然后在两个应用程序中对其进行硬编码。

马克斯·斯宾塞

您可以SecretKey使用getEncoded()方法导出一个这将返回一个字节数组,您可以将其编码为字符串,例如使用base 64编码。所述SecretKeySpec对象可以从该编码的字节数组被重新创建。

只是为了给您一个更好的主意,未经测试:

初代和出口

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

// "AES" is the key generation algorith, you might want to use a different one.
KeyGenerator kg = KeyGenerator.getInstance("AES"); 

// 256-bit key, you may want more or fewer bits.
kg.init(256);

SecretKey key = kg.generateKey();
byte[] keyBytes = key.getEncoded();

// Encode to a String, e.g. base 64 encoded
String encodedKey = new String(Base64.encodeBase64(keyBytes), "UTF-8");

导入/创建

// Base 64 decode
byte[] keyBytes = Base64.decodeBase64(encodedKey.getBytes("UTF-8"));

// Need to put the same key generation algorithm in here:
SecretKeySpec keySpec = new SecretKeySpec(keyBytes, "AES");

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何存储加密密钥?

来自分类Dev

如何保护加密密钥

来自分类Dev

SSL在使用对称加密密钥时的奇怪行为?

来自分类Dev

如何使用加密密钥加密消息

来自分类Dev

如何设置默认的GPG加密密钥?

来自分类Dev

了解加密密钥

来自分类Dev

DES加密密钥

来自分类Dev

HKDF或PBKDF2用于生成对称加密密钥?(Python密码学)

来自分类Dev

如何在安全(C ++)中存储加密密钥?

来自分类Dev

计算机如何轻松生成加密密钥?

来自分类Dev

如何使用加密密钥进行安全的ldap连接?

来自分类Dev

HTTPS如何避免首先窃取加密密钥?

来自分类Dev

如何告诉SED重新生成加密密钥?

来自分类Dev

如何保护app.php加密密钥?(Laravel 5)

来自分类Dev

如何在JSONStore中存储加密密钥/密码

来自分类Dev

如何知道接收方的AES加密密钥是正确的?

来自分类Dev

Always Encrypted 列加密密钥是如何缓存的?

来自分类Dev

GPG更改对称加密密码

来自分类Dev

Android AES加密密钥

来自分类Dev

如何在Java中以非对称加密生成密钥对?

来自分类Dev

使用加密模块从node.js中的Curve25519(或X25519)非对称密钥对生成共享秘密密钥

来自分类Dev

Sugar ORM指定加密密钥

来自分类Dev

在Laravel中设置加密密钥以注销

来自分类Dev

更新/更改领域加密密钥

来自分类Dev

MySQL加密密钥存储在文件上

来自分类Dev

Django加密密钥完整性

来自分类Dev

OpenPGP加密密钥-isValidForEncrypting()吗?

来自分类Dev

密码/加密密钥程序中的密码

来自分类Dev

找不到领域文件的加密密钥