Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php中我的加密代码出错_Php - Fatal编程技术网

php中我的加密代码出错

php中我的加密代码出错,php,Php,请问我的代码有什么问题?该代码用于加密给定字符串。它的加密功能非常好,但是当回显加密值时,它会向其添加数字。代码如下: $keys=BB94TU1LSLGPKNU; $encrypt=数组; //这包含我用于加密的密钥/值对 (a)f=>l,f=>l,g,g,g,g,g,g,g,g,h=>n,g,g,g,h=>n,i,i=>o,j=>p,i,i,p,p,p,p,p,p,b=>p,b=>g,b,p,b=>g,b,p,p,p,p,p,b,p,p,p,p,p,p,p,k=>p,p,p,p,c,p,p,

请问我的代码有什么问题?该代码用于加密给定字符串。它的加密功能非常好,但是当回显加密值时,它会向其添加数字。代码如下:

$keys=BB94TU1LSLGPKNU; $encrypt=数组; //这包含我用于加密的密钥/值对 (a)f=>l,f=>l,g,g,g,g,g,g,g,g,h=>n,g,g,g,h=>n,i,i=>o,j=>p,i,i,p,p,p,p,p,p,b=>p,b=>g,b,p,b=>g,b,p,p,p,p,p,b,p,p,p,p,p,p,p,k=>p,p,p,p,c,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p,p=>p,p,p,p,p,b,p,p,p,b,p,p,p,p,p,p,p,p,b,b=>p,b,p,p,p,p,p,p,p,b,p,p,p,p,p,q,l=>r,m=>s,n=>t,o=>u,p=>v,q=>w,r=>x,s=>y,t=>z,u=>a,v=>b,w=>c,x=>d,y=>e,z=>f,0=>2,1=>4,2=>6,3=>8,4=>0,5=>9,6=>7,7=>5,8=>3,9=>1; 对于$i=0$i$letter{ 如果$keys[$i]==$key{ //在$encrypt数组中追加每个的值 数组\u push$encrypt,$letter; } } } } $encryptedValue=; foreach$加密为$加密{ $encryptedValue.=$encrypted; echo$encryptedValue; } 它打印:

H2h210z2A24R2Y2Y2R2m2V2Q2T2a2
而不是:

Hh10zA4RYYRmVQTa

在任何情况下,尝试使用$i而不是仅使用名称来获取匹配值都过于复杂。str_分割得到一个字符数组,然后只需$arrayEncrypt[$value]即可。要撤消,可以使用数组翻转

使您成为一个很好的加密和解密函数。享受

<?php
// 1 to encrypt
// 2 to decrypt
function encdec($do, $keys){
    $arrayEncrypt = array("a"=>"g","b"=>"h","c"=>"i","d"=>"j","e"=>"k","f"=>"l","g"=>"m","h"=>"n","i"=>"o","j"=>"p","k"=>"q","l"=>"r", "m"=>"s","n"=>"t","o"=>"u","p"=>"v","q"=>"w","r"=>"x","s"=>"y","t"=>"z","u"=>"a","v"=>"b","w"=>"c","x"=>"d","y"=>"e","z"=>"f","A"=>"G","B"=>"H","C"=>"I","D"=>"J","E"=>"K","F"=>"L","G"=>"M","H"=>"N","I"=>"O","J"=>"P","K"=>"Q","L"=>"R","M"=>"S","N"=>"T","O"=>"U","P"=>"V","Q"=>"W","R"=>"X","S"=>"Y","T"=>"Z","U"=>"A","V"=>"B","W"=>"C","X"=>"D","Y"=>"E","Z"=>"F","0"=>"2","1"=>"4","2"=>"6","3"=>"8","4"=>"0","5"=>"9","6"=>"7","7"=>"5","8"=>"3","9"=>"1");

    if ($do==2){
        $arrayEncrypt=array_flip($arrayEncrypt);
    }

    $chars = str_split($keys);
    $encryptedValue="";

    foreach($chars as $char=>$value){
        $encryptedValue .= $arrayEncrypt[$value];
    }

    return $encryptedValue;
}

echo "Encrypted key: ".encdec(1,"Bb94tU1LSSLgPKNu")."<br />";
echo "Decrypted key: ".encdec(2,"Hh10zA4RYYRmVQTa")."<br />";

?>

这个代码甚至不起作用。除了缺少分号和执行@$encryptedValue=…,当我更正所有分号时,不会产生任何输出。请不要对非js、css或html代码使用代码段功能。@Enstage我已粘贴了完整的代码并更正了您提到的那一行。你现在可以检查一下吗?@Daedalus下次我会尽量不做这种方法是加密,就像骰子是随机数生成一样。它奏效了。谢谢你,帕特里克。我只是PHP的初学者。我从这个答案中学到了一些新东西