ホームページ  >  記事  >  バックエンド開発  >  エラー aesGCMOpen がパスワードを取得しました: メッセージ認証に失敗しました: golang 復号化 gcm

エラー aesGCMOpen がパスワードを取得しました: メッセージ認証に失敗しました: golang 復号化 gcm

王林
王林転載
2024-02-06 08:05:03995ブラウズ

错误 aesGCMOpen 得到密码:消息身份验证失败:golang 解密 gcm

質問内容

rails activesupportの復号化をgolangに書き換えようとしていますが、このエラーが発生します

エラー aesGCMOpen はパスワードを取得しました: メッセージの検証に失敗しました

これは復号化を積極的にサポートする Rails コードです

リーリー

これは、rails からの activesupport の書き換えを解読しようとする Golang コードです。

リーリー

重要なのは次のとおりです:

リーリー

この Rails コマンドから暗号化されたデータを生成しました

リーリー

解決策を見つけた場合は、コメントを残してください。

###ありがとう###

Rails 暗号化から暗号化されたデータを復号できる

正解

Go コード内

aesGCM.Open()呼び出しでは、暗号文と認証ラベルがそれぞれ 3 番目と 4 番目のパラメーターで渡されます。これは間違っています。 2 つのデータを連結して 3 番目のパラメーターに渡す必要があります。 4 番目のパラメータは nil である必要があります。このパラメータは、ここでは使用されていない 追加データ に使用されます。 さらに、復号化されたデータの逆シリアル化が Go コードから欠落しています。これを行うには、
ruby-marshal などの適切なライブラリを適用する必要があります。 全体として、次の変更が必要です:

リーリー

これらの変更により、Rails コードを使用して暗号化されたデータは Go コードを使用して正常に復号化できるようになりました。

以上がエラー aesGCMOpen がパスワードを取得しました: メッセージ認証に失敗しました: golang 復号化 gcmの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。