首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LibSodium函数返回不可读字符

LibSodium函数返回不可读字符
EN

Stack Overflow用户
提问于 2021-12-10 20:33:16
回答 1查看 61关注 0票数 0

下面是一个关于加密的教程:https://php.watch/articles/modern-php-encryption-decryption-sodium。在使用钠扩展的过程中,我只是对一些事情感到困惑。谷歌( Googling )对谷歌的帮助微乎其微。(大多数结果只是重复php.net/手册。)

1.在我所读的各种文章中,sodium_crypto_*_encrypt()的结果是一些熟悉的东西:

代码语言:javascript
复制
// ex. DEx9ATXEg/eRq8GWD3NT5BatB3m31WED

每当我自己回音的时候,我就会得到这样的感觉:

代码语言:javascript
复制
// ex. �2(*���3�CV��Wu��R~�u���H��

我肯定它不会正确地存储在数据库中。在文章或文档中,它没有提到任何关于字符集古怪的地方。我可以在其中添加一个header('Content-Type: text/html; charset=ISO-8859-1'),但我仍然会看到一些奇怪的字符,我不确定这些字符是否正确,因为我没有发现任何线程在谈论这个问题:

代码语言:javascript
复制
// ex. ÑAÁ5eŠ…n@±'ýÞÃ1è9ÜÈ̳¬"CžãÚ0ÿÛ

2.我找不到任何关于存储密钥或非keys的最佳实践的信息。

我只是认为,这显然是为了安全--人们--但不是--其他人的一些信息,这将是关于关键氏族和非安全等的文章中经常讨论的部分。考虑到我的keygen函数和当前函数(至少在钠库中)似乎返回了非UTF-8垃圾信息,我该如何处理它呢?fwrite将其输出到一个文件中供以后参考?直接传给我的数据库?复制/粘贴当然不正确,因为它是翅膀。

除此之外,加密/解密过程中的其他一切对我来说都是完全有意义的。我对PHP开发并不陌生,只是搞不懂这一点。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-10 21:12:00

偶然看到https://stackoverflow.com/a/44874239/1128978回答"PHP random_bytes返回不可读字符“

random_bytes生成任意长度的密码随机字节字符串.

并建议使用bin2hex获取可读的字符。所以修改我的习惯:

代码语言:javascript
复制
// Generate $ciphertext
$message = 'This is a secret message';
$key = sodium_crypto_*_keygen();
$nonce = random_bytes(SODIUM_CRYPTO_*BYTES);
$ciphertext = sodium_crypto_*_encrypt($message, '', $nonce, $key);

// Store hexadecimal versions of binary output
$nonce_hex = bin2hex($nonce);
$key_hex = bin2hex($key);
$ciphertext_hex = bin2hex($ciphertext);

// When ready to decrypt, convert hexadecimal values back to binary
$ciphertext_bin = hex2bin($ciphertext_hex);
$nonce_bin = hex2bin($nonce_hex);
$key_bin = hex2bin($key_hex);

$decrypted = sodium_crypto_*_decrypt($ciphertext_bin, '', $nonce_bin, $key_bin);
// "This is a secret message"

因此,大量使用bin2hexhex2bin,但这现在是有意义的。有效地解决了问题,尽管不太自信,但这是正确的解决方法。我仍然不知道为什么在php.net/手册中没有指出这一点,也不知道我一直在阅读的任何文章/评论中都没有指出这一点。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70310082

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档