您好,我正在尝试通过php openssl函数使用AES-CCM-256加密,但它似乎有一个错误,当IV是12字节时,它会产生错误的标记,就像有人在这篇文章here中向我解释的那样
是否有任何解决方案或其他方法可以在PHP中使用IV/nonce (12字节)加密aes-ccm-256
注意:对于IV/nonce,我需要使用12个字节的长度,不幸的是,我必须使用php
发布于 2020-05-27 05:29:08
我使用Openssl库很幸运地做到了这一点。我写了一个库,包装了Openssl中的一些加密和解密功能,希望能让它变得更简单。
下面是一个简短的示例,它使用AES-256-CCM对使用12字节IV的字符串进行加密和解密:
use Encryption\Encryption;
require('../vendor/autoload.php');
$text = 'The quick brown fox jumps over the lazy dog';
$key = 'secretkey';
$encryption = Encryption::getEncryptionObject('AES-256-CCM');
$iv = $encryption->generateIv();
$encryptedText = $encryption->encrypt($text, $key, $iv, $tag);
$decryptedText = $encryption->decrypt($encryptedText, $key, $iv, $tag);
printf('Cipher : %s%s', $encryption->getName(), PHP_EOL);
printf('IV : %s%s', base64_encode($iv), PHP_EOL);
printf('IV Length: %s%s', strlen($iv), PHP_EOL);
printf('Tag : %s%s', base64_encode($tag), PHP_EOL);
printf('Encrypted: %s%s', $encryptedText, PHP_EOL);
printf('Decrypted: %s%s', $decryptedText, PHP_EOL);输出:
Cipher : AES-256-CCM
IV : i925n5X6xdrKyImY
IV Length: 12
Tag : b/fl4BEDAGN5U0P40/GN7g==
Encrypted: zcfFmoRKZNxxwh4z9FGaY63bl4YXYnzSxlLFEE+e9QqsMhoJjpsJ6ALH2ho+ochS
Decrypted: The quick brown fox jumps over the lazy dog如果这对您来说已经足够好了,那么这个库就叫做PHP Simple Encryption,并且可以作为composer package使用。
https://stackoverflow.com/questions/62031354
复制相似问题