2020年5月28日 星期四

【javascript】小數相加

javascript 小數相加偶爾會跑出奇怪的數字
例如:1.001 + 2.0001 = 3.00110000000000001

解決方式:先把小數乘很大的數,讓他變成整數計算好在除回去

剛剛的例子要改成:
(1.001 * 1e12) + (2.0001 * 1e12) / 1e12

(1e12 = 1後面帶了12個0,1000000000000)

2020年5月13日 星期三

【PHP】 AES 256 encrypt decrypt

AES(Advanced Encryption Standard) 256 進階加密標準
用來取代舊的DES(Data Encryption Standard)

php 的 mcrypt_encrypt 函數在php7.2就不支援要使用openssl_encrypt

使用openssl加解密方法:
function encrypt($key, $payload)
{
    $iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length('aes-256-cbc'));
    $encrypted = openssl_encrypt($payload, 'aes-256-cbc', $key, 0, $iv);
    return base64_encode($encrypted . '::' . $iv);
}

function decrypt($key, $garble)
{
    list($encrypted_data, $iv) = explode('::', base64_decode($garble), 2);
    return openssl_decrypt($encrypted_data, 'aes-256-cbc', $key, 0, $iv);
}

$key = "ABCDE";
echo $encode = encrypt($key, "123"); 
echo "<br>";
echo $decode = decrypt($key, $encode);