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条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥50 易语言把MYSQL数据库中的数据添加至组合框
    • ¥20 求数据集和代码#有偿答复
    • ¥15 关于下拉菜单选项关联的问题
    • ¥20 java-OJ-健康体检
    • ¥15 rs485的上拉下拉,不会对a-b<-200mv有影响吗,就是接受时,对判断逻辑0有影响吗
    • ¥15 使用phpstudy在云服务器上搭建个人网站
    • ¥15 应该如何判断含间隙的曲柄摇杆机构,轴与轴承是否发生了碰撞?
    • ¥15 vue3+express部署到nginx
    • ¥20 搭建pt1000三线制高精度测温电路
    • ¥15 使用Jdk8自带的算法,和Jdk11自带的加密结果会一样吗,不一样的话有什么解决方案,Jdk不能升级的情况