首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从明文生成密钥?

从明文生成密钥?
EN

Stack Overflow用户
提问于 2017-02-17 01:40:46
回答 1查看 739关注 0票数 0

我需要从纯文本和任何参数(系统时间或salt)中生成一个随机密钥。这在Java中是可能的吗?我应该考虑怎样的类/方法组合来做到这一点呢?

EN

回答 1

Stack Overflow用户

发布于 2017-02-17 02:26:01

您可以查看javax.crypto包中的类,如

代码语言:javascript
复制
javax.crypto.Cipher;
javax.crypto.KeyGenerator;
javax.crypto.SecretKey;

以下是一个例子:

代码语言:javascript
复制
public static String generateSymmetricKey() {

    KeyGenerator keyGenerator;
    try {
        keyGenerator = KeyGenerator.getInstance("AES");
        keyGenerator.init(128);
        SecretKey key = keyGenerator.generateKey();

        Cipher encodeCipher = Cipher.getInstance("AES/CTR/NoPadding");
        encodeCipher.init(Cipher.ENCRYPT_MODE, key);

        String bigSecret = Base64.getEncoder().encodeToString(
                key.getEncoded());

        return bigSecret;

    } catch (Exception e) {
        System.err.println("Secret Key generation failed: "
                + e.getMessage());
        throw new RuntimeException(e);
    }

}

因此,您将得到Base64编码,按照"AES/CTR/NoPadding“规范对称密钥加密。

然后有一个问题-你真的需要一个随机的从“纯文本”,盐,时间戳?或者你需要用密钥和盐加密你的“纯文本”?

随机键的“纯文本”用途是什么?

通常有一条路:

  1. 你有一个值和一个键
  2. 您使用密钥加密您的值。
  3. 为了保持密钥的机密性,您需要对密钥本身进行加密,并将其存储为somewhere.As,只要密钥是一个字节数组,最好将其编码为字符串,以便方便地存储在某处。
  4. 当您需要解密一个值-您还原一个密钥,然后使用它来解密您的值。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42287903

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档