相关疑难解决方法(0)

你如何加密和解密PHP字符串?

我的意思是:

Original String + Salt or Key --> Encrypted String
Encrypted String + Salt or Key --> Decrypted (Original String)
Run Code Online (Sandbox Code Playgroud)

也许是这样的:

"hello world!" + "ABCD1234" --> Encrypt --> "2a2ffa8f13220befbe30819047e23b2c" (may be, for e.g)
"2a2ffa8f13220befbe30819047e23b2c" --> Decrypt with "ABCD1234" --> "hello world!"
Run Code Online (Sandbox Code Playgroud)
  • 在PHP中,你怎么能这样做?

尝试使用Crypt_Blowfish,但它对我不起作用.

php security encryption cryptography encryption-symmetric

211
推荐指数
8
解决办法
43万
查看次数

如何保护ajax内容

我在almaconnect.com上,在主页上有一个文本框,当你输入时自动提示大学的一些结果(通过拨打ajax来加载内容).我确实发出了相同的ajax调用的curl请求,但是请求导致终端上的一些加密线路

curl 'https://www.almaconnect.com/suggestions/portaled_institute?q=am' -H 'Host: www.almaconnect.com' -H 'User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:44.0) Gecko/20100101 Firefox/44.0' -H 'Accept: application/json, text/javascript, */*; q=0.01' -H 'Accept-Language: en-US,en;q=0.5' -H 'Accept-Encoding: gzip, deflate, br' -H 'X-Requested-With: XMLHttpRequest' -H 'Referer: https://www.almaconnect.com/' -H 'Cookie: Almaconnect=; _ga=GA1.2.315358219.1489989532; __utma=117457241.315358219.1489989532.1490871434.1492414070.3; __utmz=117457241.1490871434.2.2.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=(not%20provided); _gat=1; __utmb=117457241.1.10.1492414070; __utmc=117457241; __utmt=1'
Run Code Online (Sandbox Code Playgroud)

我希望我的网站具有完全相同的功能,以便如果任何用户尝试获取我的网站数据,他将无法做到.

linux apache security ajax http

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

JavaScript加密和PHP解密

我在JavaScript中加密我的用户密码,如下所示:

 var encryptedPassword = CryptoJS.AES.encrypt(password, "Secret Passphrase");
Run Code Online (Sandbox Code Playgroud)

它工作正常,但现在我试图在服务器端解密PHP,如下所示:

 $iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC), MCRYPT_RAND);
 $decryptPassword = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, "Secret Passphrase", base64_decode($password), MCRYPT_MODE_CBC, $iv);
Run Code Online (Sandbox Code Playgroud)

它根本不起作用,解密的密码字符串看起来很奇怪:

 string(64) ">?OX2MS???v?<$????i????_??P???\??=?_6(?m????,4WT7??a"
Run Code Online (Sandbox Code Playgroud)

以下是有用评论之后我的JavaScript代码的当前状态:

    var encryptedPassword = CryptoJS.AES.encrypt(password, "Secret Passphrase");
    var ivHex = encryptedPassword.iv.toString();
    var ivSize = encryptedPassword.algorithm.ivSize; // same as blockSize
    var keySize = encryptedPassword.algorithm.keySize;
    var keyHex = encryptedPassword.key.toString();
    var saltHex = encryptedPassword.salt.toString(); // must be sent
    var openSslFormattedCipherTextString = encryptedPassword.toString(); // not used
    var cipherTextHex = encryptedPassword.ciphertext.toString(); // must be sent
Run Code Online (Sandbox Code Playgroud)

我将saltHex和CipherTextHex发送到PHP服务器,我正在使用mcrypt_decrypt(),如下所示:

 $iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC), $saltHex); …
Run Code Online (Sandbox Code Playgroud)

javascript php encryption mcrypt cryptojs

4
推荐指数
2
解决办法
2万
查看次数

PHP使用CryptoJS在JavaScript中打开openssl_encrypt

我在使用第三方PHP服务器提供的JavaScript中生成相同的密文时遇到问题。服务器端使用简单的单行代码生成密钥,但是我找不到在JavaScript客户端中执行相同操作的方法。

我决定从其他SO答案中使用CryptoJS库,并且确实生成了密文,但它与PHP服务器中的密文不同。

PHP加密:

echo openssl_encrypt("5905","AES-256-CBC","FbcCY2yCFBwVCUE9R+6kJ4fAL4BJxxjdRcqy5rHVLwU=",NULL,"e16ce913a20dadb8");
// phgygAJB3GA0sa4D9k/d8A==
Run Code Online (Sandbox Code Playgroud)

我尝试了来自Stack Overflow的几种解决方案,但这些解决方案未能创建相同的密文。

另外,PHP一线式的参数“ AES-256-CBC”使我感到困扰:我知道AES是什么,但是我不知道那256个或CBC部分是什么,并且我不知道在哪里设置它们。 CryptoJS方面。

我目前的尝试:

var key = 'FbcCY2yCFBwVCUE9R+6kJ4fAL4BJxxjdRcqy5rHVLwU=';
var iv = 'e16ce913a20dadb8';
var encrypted = CryptoJS.AES.encrypt("5905", CryptoJS.enc.Hex.parse(key), { iv: CryptoJS.enc.Hex.parse(iv) });
var r1 = encrypted.ciphertext.toString(); // def44f8822cfb3f317a3c5b67182b437
var r2 = CryptoJS.enc.Base64.stringify(encrypted.ciphertext) // 3vRPiCLPs/MXo8W2cYK0Nw==
Run Code Online (Sandbox Code Playgroud)

我的猜测是我在JavaScript中的某个地方缺少了“ 256”和“ CBC”参数。

javascript encryption encoding cryptojs

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

CryptoJs - 通过 PHP 和 Javascript 加密/解密 - 简单输出加密字符串

我想在 Php 和 Javascript 中加密和解密一些字符串,并在网上查看,最好和最安全的方法似乎是 CryptoJs。

这篇文章不是Encrypt with PHP, Decrypt with Javascript (cryptojs)的副本,因为它的输出字符串并不简单。

这是我的代码,但 Js 解密代码不起作用。怎么了?

<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.2/rollups/aes.js"></script>
    </head>
    <body>
        <p>--- PHP ------------------</p>
    
        <?php
            function myCrypt($value, $passphrase, $iv){
                $encrypted_data = openssl_encrypt($value, 'aes-256-cbc', $passphrase, true, $iv);
                return base64_encode($encrypted_data);
            }
            
            function myDecrypt($value, $passphrase, $iv){
                $value = base64_decode($value);
                $data = openssl_decrypt($value, 'aes-256-cbc', $passphrase, true, $iv);
                return $data;
            }
            

            $valTxt="MyText";
            $pswd="MyPassword";
            $vector="1234567890123412";
            $encrypted = myCrypt($valTxt, $pswd, $vector);
            $decrypted = myDecrypt($encrypted, $pswd, $vector);
            
            echo "<p>Text to crypt --------> …
Run Code Online (Sandbox Code Playgroud)

javascript php encryption cryptojs

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