今日、AES暗号化は調査の後、そこに行くには、暗号化されてきた問題であり、常にPHPの最後に復号化されない、でPHPの行くと同義的に使用され、最終的には、問題は、暗号化キーの長さによって引き起こされるこの単純なレコードを見つけ。
AESの行く、サードパーティのライブラリを使用してOpenSSLは、我々が直接サンプルコードを取得するので、急いでいるので、唯一のPHPと終わりが実際に、復号化することができない見つけるために、ドキュメントを参照してくださいに注意を払っていない、それは実際に文書で非常に明確に言いました、「キーの長さができ 16/24/32文字(128/192/256ビット)である」、 キーの長さは、それぞれわずか16、24及び32文字、AES-128、AES-192であり、またはAES-256および他のモデル。
あまりにも32のうち、長さを懸念していないので、私はPHPでんだけど、私はECBモードを使用していたので、そう実際には32ビットの文字の長さは、実際には16文字にカットされ、その後、私はまた設定するにはで行きます32の文字は右、ライン上のキーPHP設定されているキーの長さの半分に直接行かないで、ちょっと、あなたはキー設定がプロンプトあまり良いしない場合、貨物ピットPHPと言いました。
コードを行きます
func Encrypt(data map[string]interface{}) (s string) {
src,_ :=json.Marshal(data)
key := []byte("YzfNCQoF9P7tjwyZ")
dst , err := openssl.AesECBEncrypt(src, key, openssl.PKCS7_PADDING)
if err !=nil {
fmt.Printf("encrypt error:%s" ,err)
}
fmt.Printf(SafeBase64Encode(base64.StdEncoding.EncodeToString(dst)) )
return SafeBase64Encode(base64.StdEncoding.EncodeToString(dst))
}
PHPコード
public static function encrypt($str, $key){
$encryptStr = openssl_encrypt($str, 'AES-128-ECB',$key,OPENSSL_RAW_DATA);
return static::urlsafe_b64encode($encryptStr);
}
概要:PHPとAESのgolangは、次のキーの長さにもっと注意を払います