如何使用libphp加密/解密AES
如何使用libphp加密/解密AES,php,encryption,cryptography,aes,libsodium,Php,Encryption,Cryptography,Aes,Libsodium,我需要用PHP加密/解密数据。我对这一点完全不熟悉,但是我读到libnaudephp是AES加密的最佳工具。就像我研究过的其他PHP加密库一样,Libsoduim PHP似乎没有提供关于如何使用该库的文档(我能够找到)。任何有PHP加密经验的人都可以为我指出一个好的学习资源的方向,或者使用Libsoduim PHP编写几行示例代码吗?非常感谢您的帮助, 地图集 就像我研究过的其他PHP加密库一样,Libsoduim PHP似乎没有提供关于如何使用该库的文档(我能够找到) 从中你会发现一个直接的链
我需要用PHP加密/解密数据。我对这一点完全不熟悉,但是我读到libnaudephp是AES加密的最佳工具。就像我研究过的其他PHP加密库一样,Libsoduim PHP似乎没有提供关于如何使用该库的文档(我能够找到)。任何有PHP加密经验的人都可以为我指出一个好的学习资源的方向,或者使用Libsoduim PHP编写几行示例代码吗?
非常感谢您的帮助,
地图集 就像我研究过的其他PHP加密库一样,Libsoduim PHP似乎没有提供关于如何使用该库的文档(我能够找到) 从中你会发现一个直接的链接,它涵盖了你开始LibNade所需要知道的一切 最后一章包含,但每章都包含详细的使用信息 如果您特别需要AES
如果你没有“AES或BAST”的要求挂在你的头上,如果没有明确使用AES意味着你的部门被砍掉,你的开发人员面临一个行刑队,你应该考虑只使用XSALSA20进行加密,并附加一个PYL1305认证标签。(这是,您几乎总是希望使用它。)
如果您想要轻松模式,也可以查看一下。PHP版本>=7.2 如果您使用的是PHP>=7.2,请改用内置的Na钠内核扩展 示例实现<?php
//Simple Usage
/**
* Encrypt a message
*
* @param string $message - message to encrypt
* @param string $key - encryption key
* @return string
*/
function safeEncrypt($message, $key)
{
$nonce = random_bytes(
SODIUM_CRYPTO_SECRETBOX_NONCEBYTES
);
$cipher = base64_encode(
$nonce.
sodium_crypto_secretbox(
$message,
$nonce,
$key
)
);
sodium_memzero($message);
sodium_memzero($key);
return $cipher;
}
/**
* Decrypt a message
*
* @param string $encrypted - message encrypted with safeEncrypt()
* @param string $key - encryption key
* @return string
*/
function safeDecrypt($encrypted, $key)
{
$decoded = base64_decode($encrypted);
if ($decoded === false) {
throw new Exception('Scream bloody murder, the encoding failed');
}
if (mb_strlen($decoded, '8bit') < (SODIUM_CRYPTO_SECRETBOX_NONCEBYTES + SODIUM_CRYPTO_SECRETBOX_MACBYTES)) {
throw new Exception('Scream bloody murder, the message was truncated');
}
$nonce = mb_substr($decoded, 0, SODIUM_CRYPTO_SECRETBOX_NONCEBYTES, '8bit');
$ciphertext = mb_substr($decoded, SODIUM_CRYPTO_SECRETBOX_NONCEBYTES, null, '8bit');
$plain = sodium_crypto_secretbox_open(
$ciphertext,
$nonce,
$key
);
if ($plain === false) {
throw new Exception('the message was tampered with in transit');
}
sodium_memzero($ciphertext);
sodium_memzero($key);
return $plain;
}
//Encrypt & Decrypt your message
$key = random_bytes(SODIUM_CRYPTO_SECRETBOX_KEYBYTES);
$enc = safeEncrypt('Encrypt This String...', $key); //generates random encrypted string (Base64 related)
echo $enc;
echo '<br>';
$dec = safeDecrypt($enc, $key); //decrypts encoded string generated via safeEncrypt function
echo $dec;
斯科特先生,你能帮我一下吗。。我正在运行PHP版本7.2.14。您知道在运行代码时如何解决此错误吗?致命错误:未捕获错误:调用未定义的函数Na钠加密加密盒密钥根()@TimM Try$key=random字节(Na钠加密盒密钥字节);