我正在寻找一种通过32个字符长的密钥加密和解密12位数文本的方法。 密码必须是固定长度(32或更小)。有可能吗?
提前致谢
答案 0 :(得分:0)
当然。使用好的分组密码(如AES),您可以选择将文本加密为块(输出将是32个字符的块),并且您将使用256位加密或使用加密的nonce对文本进行异或(输出将是一个12字节的密文),你将有96位加密。
只需谷歌搜索AES和C#应该提供一个现成的实现。请务必使用正确的nonce(在某些情况下也称为initialization vector)。
要为您的目的使用哈希(请参阅对此答案的评论),请按以下步骤操作:
计算HASH = hash(FROM_DATE + TO_DATE + SECRET)
。
输出FROM_DATE + TO_DATE + HASH
。
+
表示隐身,SECRET
仅为您所知。
如果仅使用大写字母和数字,则至少 25个字符。
将字符串拆分为FROM_DATE + TO_DATE
和HASH
。
验证HASH = hash(FROM_DATE + TO_DATE + SECRET)
SHA-256应该可以很好地发挥作用。