douyuanqia665858 2016-05-23 06:45
浏览 88

defuse / php-encryption - 同一个密钥在不同的机器上不起作用?

I am quite new to the encryption subject.

What I need in my PHP scripts is a simple synchronous encryption for a value I need to store in DB. So I already read several tutorials and posts and decided to go with defuse/php-encryption.

The approach seems quite straight forward

generate a key and use it for further decrypt/encrypt

Encrypt

  1. encrypt data with the key
  2. store encrypted in DB

Decrypt

  1. read encrypted data from DB
  2. decrypt it with the key
  3. have fun with the plain text

I downloaded v2 of the defuse/php-encryption library from https://github.com/defuse/php-encryption/releases

generated the key

Key::createNewRandomKey();
echo $key->saveToAsciiSafeString();

stored it - for testing - just directly in a getKey() method of my PHP script.

I encrypt/decrypt like this

Crypto::encrypt($plainText, Key::loadFromAsciiSafeString($key));
Crypto::decrypt($encryptedText, Key::loadFromAsciiSafeString($key));

which works like a charm as long as I stay on my machine.

Unfortunately when I switch to my Mac laptop and run the same code - with the same key (!), I get an exception:

PHP Fatal error: Uncaught exception 'Defuse\Crypto\Exception\BadFormatException' with message 'Invalid header.' in phar://classes/encryption/defuse-crypto.phar/src/Encoding.php:177

Stack trace:

#0 phar://classes/encryption/defuse-crypto.phar/src/Key.php(38): Defuse\Crypto\Encoding::loadBytesFromChecksummedAsciiSafeString('\xDE\xF0\x00\x00', 'c622e3d4793e511...')

If I generate a new key on the Mac - it works. But this leaves a very uneasy feeling because I have to be able to decrypt the data with the same key on any machine.

If one day the server crashes and I will have to restore the data on a different machine getting such nice errors while decrypting - I will be doomed :-)

I am definitely doing something wrong. I can use any advice you can provide.

thanks

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥100 set_link_state
    • ¥15 虚幻5 UE美术毛发渲染
    • ¥15 CVRP 图论 物流运输优化
    • ¥15 Tableau online 嵌入ppt失败
    • ¥100 支付宝网页转账系统不识别账号
    • ¥15 基于单片机的靶位控制系统
    • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
    • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
    • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
    • ¥15 手机接入宽带网线,如何释放宽带全部速度