php加密在5.6或更高版本中不起作用?

时间:2017-04-27 05:01:27

标签: php encryption

我使用此代码加密密码,但它不能运行php 5.6或更高版本。请在不改变算法的情况下向我推荐新代码。

请在不更改算法的情况下给我新代码。

<?php
class Encryption {
    var $skey = "844958uyjd875e89t5f4h6j4h5g"; // you can change it

    public function safe_b64encode($string) {
        $data = base64_encode($string);
        $data = str_replace(array('+','/','='),array('-','_',''),$data);
        return $data;
    }

    public function safe_b64decode($string) {
        $data = str_replace(array('-','_'),array('+','/'),$string);
        $mod4 = strlen($data) % 4;
        if ($mod4) {
            $data .= substr('====', $mod4);
        }
        return base64_decode($data);
    }

    public function encode($value){ 
        if(!$value){return false;}
        $text = $value;
        $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
        $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
        $crypttext = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $this->skey, $text, MCRYPT_MODE_ECB, $iv);
        return trim($this->safe_b64encode($crypttext)); 
    }

    public function decode($value){
        if(!$value){return false;}
        $crypttext = $this->safe_b64decode($value); 
        $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
        $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
        $decrypttext = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $this->skey, $crypttext, MCRYPT_MODE_ECB, $iv);
        return trim($decrypttext);
    }
}
?>

1 个答案:

答案 0 :(得分:1)

只需使用 <span [ngInit]="ControllerType1 = ControllerType.Default" *ngIf="ControllerType?.AttributeID =='Controller Type'"> <select multiple name="ControllerType.Default" [(ngModel)]="ControllerType1" (ngModelChange)="ControllerType.Default = ControllerType1"> <option *ngFor="let z of ControllerType.Options" value={{z.OptionID}}> {{z.OptionID}} </option> </select> </span> password_hash即可。这是保护密码最安全的方法。 例如:

password_verify

http://php.net/manual/en/function.password-hash.php