小编the*_*ass的帖子

客户端(JS)和服务器(PHP)中的AES 256

我正在尝试使用相同类型的操作(AES-256)对服务器端和客户端上的数据进行加密和解密.

在服务器上我使用PHP和客户端我使用CryptoJS到目前为止我只能加密和解密服务器上的客户端,请参阅代码:

JS

<script src="http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/aes.js"></script>
<script src="http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/pbkdf2.js"></script>
<script>
    var salt = CryptoJS.lib.WordArray.random(128/8); 
    var key256Bits500Iterations = CryptoJS.PBKDF2("Secret Passphrase", salt, { keySize: 256/32, iterations: 500 });
    var iv  = CryptoJS.enc.Hex.parse('101112131415161718191a1b1c1d1e1f');

    var encrypted = CryptoJS.AES.encrypt("Message", key256Bits500Iterations, { iv: iv });  
    var data_base64 = encrypted.ciphertext.toString(CryptoJS.enc.Base64); 
    var iv_base64   = encrypted.iv.toString(CryptoJS.enc.Base64);       
    var key_base64  = encrypted.key.toString(CryptoJS.enc.Base64);
</script>
Run Code Online (Sandbox Code Playgroud)

PHP

<?php
    $encrypted = base64_decode("data_base64"); // data_base64 from JS
    $iv        = base64_decode("iv_base64");   // iv_base64 from JS
    $key       = base64_decode("key_base64");  // key_base64 from JS

    $plaintext = rtrim( mcrypt_decrypt( MCRYPT_RIJNDAEL_128, $key, $encrypted, …
Run Code Online (Sandbox Code Playgroud)

javascript php encryption cryptography cryptojs

5
推荐指数
1
解决办法
5284
查看次数

输出字节数组差异版本的php

我正在使用一个将字符串转换为字节数组的函数,我在PHP和JavaScript中使用了这个函数但是当我播放这些字符时它们都有不同的行为:㬁愃膘Ƙჰ⦀飠噋ӡ㏃㏃쌌쌌ص䌠䌠

如何使结果相同?

我的代码:

function bytesFromWords($string) {
    $bytes = array();
    $j = strlen($string);

    for($i = 0; $i < $j; $i++) {
        $char = ord(mb_substr($string, $i, 1));
        $bytes[] = $char >> 8;
        $bytes[] = $char & 0xFF;
    }
    return $bytes;
}
echo bytesFromWords('?????????&???????'); // result: 0,227,0,172,0,129,0,230,0,132,0,131,0,232,0,134,0,152,0,198,0,152,0,225,0,131,0,128,0,228,0,154,0,144,0,226,0,166,0,128,0,233,0,163,0,160,0,229,0,153,0,139,0,38,0,211,0,161,0,224,0,185,0,168,0,227,0,143,0,131,0,230,0,163,0,177,0,236,0,140,0,140,0,216,0,181,0,228,0,140,0,160


function bytesFromWords (string) {
    var bytes = [];
    for(var i = 0; i < string.length; i++) {
        var char = string.charCodeAt(i);
        bytes.push(char >>> 8);
        bytes.push(char & 0xFF);
    }
    return bytes;
}
console.log(bytesFromWords('?????????&???????').toString()); // result: 59,1,97,3,129,152,1,152,16,192,70,144,41,128,152,224,86,75,0,38,4,225,14,104,51,195,104,241,195,12,6,53,67,32
Run Code Online (Sandbox Code Playgroud)

javascript php arrays

5
推荐指数
1
解决办法
93
查看次数

在CryptoJS和PHP中为AES加密从字符串派生密钥和IV

如何从一个公共字符串生成密钥和IV,它们可以使用PHP中的AES在加密算法中提供?

例:

$key_string = derivate_in_valid_key("i love stackoverflow");
$iv_string = derivate__in_valid_iv("i love questions");
Run Code Online (Sandbox Code Playgroud)

并且在某种程度上我也可以在JavaScript中重复派生过程.

php hash cryptography cryptojs

1
推荐指数
1
解决办法
4237
查看次数

标签 统计

php ×3

cryptography ×2

cryptojs ×2

javascript ×2

arrays ×1

encryption ×1

hash ×1