当前位置: 首页 > 知识库问答 >
问题:

从另一个变量密钥和静态密钥重新推荐密钥?[已解决]

袁霍英
2023-03-14

我在想办法做这样的事。我不知道怎么称呼它,所以我不知道它是否存在或者如何找到它。欢迎使用一些关键字:)

String var_1 = "user data";
String fix_1 = "supply data";

String mix = mixer(var_1,fix_1);
// mix = " something fully random "

String var_2 = "user data changed";
String fix_2 = fixer(var_2,mix);

和混合==混合器(var_2,fix_2);

所以为了继续,我需要从2个变量中生成随机数据。1是用户的变量,1是我提供的。

第一次,我用这两个变量和一个函数生成数据。

然后,如果用户数据改变,用另一个函数,我用第一个结果和新的用户数据计算新的供应数据。如果我再次使用计算数据和新用户数据,我必须获得第一次计算的相同数据。

有什么办法吗?像一些密码技术之类的?

感谢英特尔。

共有2个答案

黄沈浪
2023-03-14

所以在评论中遵循User253751的思想,我就能够做到这一点。

步骤:

  • 生成私有常量密钥=

---

这里是我的代码(不是一个复制/粘贴片段,因为它使用我自己的库),但是你可以通过函数名很容易地理解它。

        KeyObfusc publicKey_1 = KeyObfusc.fromPassword("publicKey_1");
        KeyObfusc password_1 = KeyObfusc.fromPassword("password_1");
        Encoder encoder_1 = new Encoder(password_1, CipherFormat.HEX);
        Decoder decoder_1 = new Decoder(password_1, CipherFormat.HEX);
        byte[] privateKey = encoder_1.toBytes(publicKey_1.getEncoded());
        byte[] publicKey_1_Rebuild = decoder_1.fromBytesToBytes(privateKey);

        LogDelay.send("password_1 : " + BytesTo.stringHex(password_1.getEncoded()));
        LogDelay.send("publicKey_1 : " + BytesTo.stringHex(publicKey_1.getEncoded()));
        LogDelay.send("privateKey : " + BytesTo.stringHex(privateKey));
        LogDelay.send("publicKey_1 Rebuild : " + Arrays.equals(publicKey_1.getEncoded(), publicKey_1_Rebuild) +
                 " " + BytesTo.stringHex(publicKey_1_Rebuild));
        LogDelay.send();

        KeyObfusc password_2 = KeyObfusc.fromPassword("password_2");
        Encoder encoder_2 = new Encoder(password_2, CipherFormat.HEX);
        Decoder decoder_2 = new Decoder(password_2, CipherFormat.HEX);
        byte[] publicKey_2 = decoder_2.fromBytesToBytes(privateKey);
        byte[] privateKey_Rebuild = encoder_2.toBytes(publicKey_2);

        LogDelay.send("password_2 : " + BytesTo.stringHex(password_2.getEncoded()));
        LogDelay.send("publicKey_2 : " + BytesTo.stringHex(publicKey_2));
        LogDelay.send("privateKey Rebuild: " + Arrays.equals(privateKey, privateKey_Rebuild) +
                " " + BytesTo.stringHex(privateKey_Rebuild));
        LogDelay.send();
堵龙野
2023-03-14

事实上,已经有这样的东西可以满足你的需求。其实你也知道这个函数。这是好的旧XOR。是的,它经常被用于密码。事实上,这是流密码和One Time Pad的核心思想。

事情是这样的:

  1. 假设您有一个长度为n字节数组,称为var\u 1

这整件事将像随机和秘密的<代码>fix_1一样随机和安全。如果其中一个值不是随机的,则该方法根本不安全。

 类似资料:
  • 我想把我的Django前端和后端分开。实际上创建了2个Django服务器。 在前端存储身份验证访问令牌和刷新令牌的最佳方式是什么? 调用API时验证身份验证的最佳方法是什么? 谢谢!

  • 第二,客户端向服务器端发送公钥。 服务器生成对称AES密钥。 4T:服务器用他的AES密钥加密他想要发送给客户端的文本。

  • 我用过这个命令 生成密钥库。它工作正常,但从我读到的内容来看,这个命令还应该提示您输入密钥密码(而不是存储密码)?我从来没有收到过这样的提示。我能跑 查看密钥库的内容。钥匙似乎就在那里。。。正确的别名在那里。在哪里获取/设置特定别名的密码? 我有一个key.properties在Android目录 在build.gradle我有: 当我试图生成一个发布版本时,我得到了 我想它可能与keyPassw

  • 这是我的密码 抱歉,如果我的代码一团糟。

  • 使用EVP_BytesToKey()返回错误的key和iv可能出了什么问题? 我试过用iter计数值做实验,但似乎没有一个能产生工作键和IV。我假设命令行默认的iter计数是1。 同样确认的是,如果我用命令行显示的工作键和iv覆盖从EVP_BytesToKey()返回的内容和硬代码无符号char数组,我的其余代码工作正常,解密正确。 有人能帮忙吗?

  • 我试图通过Wireshark分析一个SSL3.0会话。具体来说,我想解密加密的预主密钥。我的理解是预主用证书公钥加密。这是基于SSL RFC和规范 我按如下方式启动了一个OpenSSL服务器: 并连接如下: 然后我在wireshark中捕获SSL握手,并查看第三个数据包,标记为“客户机密钥交换,更改密码规范,加密握手消息”。在“客户端密钥交换”下,有一个128字节的部分,我把它理解为加密的预主密钥