我有一個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