Sey*_*ams 1 .net c# compression string
我正在研究一种基于RSA非对称算法的加密器应用程序.它生成一个密钥对,用户必须保留它.由于密钥对是长随机字符串,我想创建一个函数,让我根据模式压缩生成的长随机字符串(密钥对).
(例如,函数获取包含100个字符的字符串并返回包含30个字符的字符串)
因此,当用户输入压缩字符串时,我可以根据我压缩的模式重新生成密钥对.
但有人告诉我,压缩随机的东西是不可能的,因为它们是随机的!
你有什么想法 ?有没有办法做到这一点?
谢谢
压缩(几乎任何)随机数据是不可能的.学习一点信息理论,熵,压缩如何工作以及鸽子原理将使这一点非常清楚.
这个规则的一个例外是,如果用"随机字符串"表示"以可压缩形式表示的随机数据,如十六进制".在这种情况下,您可以压缩字符串或(更好的选项)简单地将字节编码为基数64而不是使其更短.例如
// base 16, 50 random bytes (length 100)
be01a140ac0e6f560b1f0e4a9e5ab00ef73397a1fe25c7ea0026b47c213c863f88256a0c2b545463116276583401598a0c36
// base 64, same 50 random bytes (length 68)
vgGhQKwOb1YLHw5KnlqwDvczl6H+JcfqACa0fCE8hj+IJWoMK1RUYxFidlg0AVmKDDY=
Run Code Online (Sandbox Code Playgroud)
您可能会为用户提供较短的哈希值或指纹值(例如最后x个字节).然后通过存储完整的密钥和哈希值,你可以在他们给你哈希时给他们密钥.你必须让这个哈希足够长,以免安全性受到损害.根据您的应用程序,这可能会破坏目的,因为哈希必须与密钥一样长,否则可能不是问题.
| 归档时间: |
|
| 查看次数: |
641 次 |
| 最近记录: |