我有一个8位数字段,我想将其加密(我不担心解密它)为16个字符(或更多)字段。我需要这个,所以我可以使用加密的字段发送给报告机构。将8位字段加密为16位(或更多)字符的加密例程
回答
既然你不需要解密,你可以散列它(不可逆),而不是使用加密。在PHP中,您可以使用hash和fnv164
散列算法执行此操作,该算法返回16个字符的散列。
此外,还有其他几个哈希算法会产生超过16个字符。您可以使用hash_algos来查看系统上可用的内容。 Here's一个脚本来做到这一点。
如果我们确实在谈论冷冻造影术,那么提议的散列是不安全的(足够) –
他没有提到任何安全性。只有该字段需要加密。 – Isius
加密听起来像我的安全。我们还不完全确定,因此评论。 –
,无需了解这背后的“加密”的宗旨太多这里是我建议的内容(根据你的目标是什么有些保守和安全保护的假设):
- 选择一个随机数。叫它
R
。数字最好至少为32位。 - 对于您拥有的每个8位数标识符,请组成字符串“
<digits of R><8 digit identifier>
”。 - 使用一些密码安全的散列算法来获取步骤2中形成的字符串的散列。
- 将步骤3中的散列格式化为十六进制字符串。
- 使用步骤4中的十六进制字符串作为报告给“报告机构”的标识符。
这个方案的好处是,只要你记得值R
你可以总是映射每个8位数的标识符到相同的十六进制字符标识符。这在您的应用程序中可能很重要,也可能不重要。
当然,这个方案假设你永远不需要执行一个revese映射,并且该机构不想解密标识符。换句话说,它假设你的目标只是不给机构标识符I而是一个等同标识符I'。
- 1. Laravel字段验证:允许8位或16位数字
- 2. 字节大小8位或16位?
- 3. 高效地将16位短转换为8位字符
- 4. AES加密16个字节
- 5. QT转换16位QImage为8位无符号字符在QT
- 6. android密码不解密加密数据的前16个字节/字符
- 7. 将密钥或密码用于加密的最佳位置?
- 8. Android:使用AES加密字符串256位加密使用iv和密钥
- 9. 将CRC32值减少为16或8位
- 10. 断点位于字符串加密密码
- 11. 使用指针移位+1来加密和解密字符串
- 12. 解密字符串加密
- 13. 加密/解密字符串
- 14. 如何在AES加密中加密/解密多个字符串?
- 15. 加密为短字符串
- 16. 加入加密字段
- 17. AES的Java加密16字节与目标C密钥解密
- 18. win32 - 如何将画面捕捉为8位或16位位图?
- 19. DICOM将16位转换为8位
- 20. dexguard:加密类和加密字符串?
- 21. 异或解密与多个加密字符串
- 22. 加密字符串
- 23. 加密字符串
- 24. 字符串加密
- 25. AES CBC加密/解密只解密前16个字节
- 26. AES ECB加密/解密只解密前16个字节
- 27. 加密密钥和加密字符串的解密
- 28. 解密AES中的AES加密字段
- 29. 为AES加密填充字节[]为16字节倍数
- 30. AES 256位加密 - java.security.InvalidAlgorithmParameterException:错误IV长度:必须为16字节长
报告机构将如何处理它?另外,你在什么环境下工作(C++,Python,PHP等?) – msanford
你想要通过“加密”字段来达到什么目的? 8位数字到16位字符的映射必须是一对一的映射吗?还有其他要求吗?了解这些事情对我们来说至关重要,以便正确回答您的问题。 –
正如其他人也指出的那样,这个问题还不够具体。例如,没有办法知道如果将字段作为具有Cast-128的单个块进行加密就能满足要求。 – Jack