🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

OpenSSL

OpenSSLはSSL/TLSのプロトコルと一般的な暗号のライブラリを導入するオープンソースのソフトウェアのツールキットです。

暗号化

ネットワークを通じてデジタルデータをやり取りする際に、第三者に解読されることのないよう、アルゴリズムを用いてデータを変換すること。

Q&A

1回答

1319閲覧

Java暗号化とRuby OpenSSLによる複合がマッチしない

nao31d

総合スコア0

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

OpenSSL

OpenSSLはSSL/TLSのプロトコルと一般的な暗号のライブラリを導入するオープンソースのソフトウェアのツールキットです。

暗号化

ネットワークを通じてデジタルデータをやり取りする際に、第三者に解読されることのないよう、アルゴリズムを用いてデータを変換すること。

0グッド

1クリップ

投稿2021/03/30 05:58

前提・実現したいこと

Javaで暗号化した文字列をRubyにてOpennSSLを用いて復号しようとしています。

暗号化素人ながら手探りで検証しているものの、現状では暗号化-複合の結果がマッチしません。
OpenSSLは利用してJavaの暗号化処理をOpenSSLで復号化できるように合わせたいのですが、どこに問題があるのでしょうか。

参考にした情報

Rubyにおける復号は以下を参考にしています。
https://qiita.com/kou_pg_0131/items/f5ce9fec5c9b772dbeff

このため、AES256CBC、PKCS5Padding、PBKDF2WithHmacSHA256を利用するものと理解しています。

Javaにおける暗号化は以下を参考にしています。
https://gist.github.com/yattom/a11d6d84a3d21eef6aee

特に疑問に思っている点

・Javaの参考リンク先においてEnvelope以降の処理は直接暗号化には無関係かと思っていますが、必要でしょうか。
・Javaにてcipherを用いて暗号化を行うばあい、暗号化にIVは使用しないのでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dodox86

2021/03/31 06:07

> Javaで暗号化した文字列をRubyにてOpennSSLを用いて復号しようとしています。 まず、Javaで暗号化したら、同じくJavaで復号化して元に戻るかを検証すべきではないでしょうか。同じくRubyも。でないと、どちらが悪いのか、コード自体に間違いがあるのか、切り分けづらいと思います。 あるいはどちらかは既存の完動するツールを用いて確かめるか。
guest

回答1

0

PBKDF2 前提でいいんですよね?

https://gist.github.com/yattom/a11d6d84a3d21eef6aee
に Ruby 版と Java 版が置いてあるのだから、それをベースにするのが早いのではないでしょうか。

投稿2021/03/30 15:30

68user

総合スコア2022

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nao31d

2021/03/31 02:04

はい、PBKDF2 前提で結構です。 その後調べたところ、 OpenSSL::PKCS5.pbkdf2_hmac(xxxx, xxxx, xxxx, xxxx, "sha256") 実行時の鍵生成とIV生成のロジックをJavaで実装すればよいかと理解しています。 AES256CBC、PKCS5Padding、PBKDF2、SHA256 という各要素を用いることは理解したつもりでいますが、リンク先のソースとの差分を吸収できずにおります。 Ruby側は https://qiita.com/kou_pg_0131/items/f5ce9fec5c9b772dbeff のリンク先の処理を実装する必要があり、 これに合わせてJava側を製造したいというのが意図です。 五月雨で申し訳ありません。
68user

2021/03/31 04:35

であれば、現時点のソースを開示するのがよいと思います。 > ・Javaの参考リンク先においてEnvelope以降の処理は直接暗号化には無関係かと思っていますが、必要でしょうか。 > ・Javaにてcipherを用いて暗号化を行うばあい、暗号化にIVは使用しないのでしょうか。 > 実行時の鍵生成とIV生成のロジックをJavaで実装すればよいかと理解しています。 上記の記述は、正直なところ何をおっしゃりたいのかよくわからないです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問