很多問題已被問及有關這個問題的答案,但沒有任何答案幫助我。php加密和解密數字字符串與密鑰
我要尋找一個PHP函數,將加密這樣的小整數
123456
到加密的字符串,只有A-Z
,a-z
和0-9
所以輸出會是什麼樣子a1b2c3d4
。
和我將能夠使用像stringkey
一個鍵就可以將其轉換回123456
任何幫助嗎?
很多問題已被問及有關這個問題的答案,但沒有任何答案幫助我。php加密和解密數字字符串與密鑰
我要尋找一個PHP函數,將加密這樣的小整數
123456
到加密的字符串,只有A-Z
,a-z
和0-9
所以輸出會是什麼樣子a1b2c3d4
。
和我將能夠使用像stringkey
一個鍵就可以將其轉換回123456
任何幫助嗎?
$key = "encryption key";
$text="123456";
$encrypted = bin2hex(openssl_encrypt($text,'AES-128-CBC', $key));
$decrypted=openssl_decrypt(hex2bin($encrypted),'AES-128-CBC',$key);
var_dump($encrypted,$decrypted);
嚴格來說,雖然,這隻會是AF和0-9,你能想出一個更好(更緊湊)的算法支持A-ZA-Z ...沒有在我腦海中,現在想。 (建議任何人?)
a-z工作正常。謝謝 – krummens
defuse/php-encryption即將推出的2.0.0版本將默認將其輸出編碼爲十六進制字符。
<?php
use Defuse\Crypto\Crypto;
$key = Crypto::createNewRandomKey();
$encrypted = Crypto::encrypt('123456', $key); // hex encoded
$raw_bytes = Crypto::encrypt('123456', $key, true); // raw binary
注意化解的PHP庫提供authenticated encryption,不只是簡單的加密。你應該確定你明白the difference between encryption and authentication。
我不需要/希望它很長。最多8個字符。
這聽起來像一個錯誤,並且該錯誤有一個名稱:hashids。
如果您試圖僞造一個行ID,則不想對其進行加密。相反,生成一個隨機字符串並將其作爲另一列存儲在同一個表中。將數據列添加到數據庫模式很便宜,隨機生成它比從整數中確定性地生成更安全。
這就是我們爲our audit reports所做的,不泄漏序列號。
基本上可以使用每種加密算法,即PHP/mcrypt提供了適當的編碼。輸出尺寸是否有限制? –
我不需要/希望它很長。最多8個字符。 – krummens