PHP openssl des-ede3-cbc から Golang へ

WBOY
リリース: 2024-02-08 23:10:20
転載
511 人が閲覧しました

PHP openssl des-ede3-cbc 到 Golang

PHP openssl des-ede3-cbc 到 Golang是一篇介绍在PHP和Golang之间进行加密算法转换的文章。在这篇文章中,php小编子墨将详细讲解如何使用openssl库中的des-ede3-cbc算法,在PHP中对数据进行加密,然后将加密后的数据传输到Golang程序中进行解密。通过这篇文章,读者可以了解到如何在不同编程语言之间进行加密算法的转换,从而更好地应用于实际开发中。

问题内容

我有以下 php 代码:

$l = ceil(strlen($message) / 8) * 8; $enc = substr(openssl_encrypt($message . str_repeat("\0", $l - strlen($message)), 'des-ede3-cbc', $key, openssl_raw_data, "\0\0\0\0\0\0\0\0"), 0, $l);
ログイン後にコピー

如何在 go 中实现它?

我尝试了这样的方法,但得到了不同的结果:

block, err := des.NewTripleDESCipher(key) if err != nil { fmt.Printf("err: %s", err) return } // Create initialization vector from rand.reader iv := make([]byte, des.BlockSize) if _, err := io.ReadFull(rand.Reader, iv); err != nil { fmt.Printf("err: %s", err) return } // Encrypt with CBC mode cipherText := make([]byte, len(plainText)) encryptMode := cipher.NewCBCEncrypter(block, iv) encryptMode.CryptBlocks(cipherText, plainText) str := hex.EncodeToString(cipherText) fmt.Println("Cipher text: %s", str)
ログイン後にコピー

解决方法

发现错误了。我使用rand.Reader作为iv但在 PHP 中是不同的。

var iv = []byte{0, 0, 0, 0, 0, 0, 0, 0}

以上がPHP openssl des-ede3-cbc から Golang への詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:stackoverflow.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!