質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.35%
Ruby

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

4733閲覧

異なる言語間の暗号化、複合化

cocoa-maemae

総合スコア25

Ruby

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

2グッド

2クリップ

投稿2016/11/01 12:52

編集2016/11/29 04:02

PHPで暗号化します。
blowfish.php

php

1 2//blowfishで暗号化 3<?php 4require_once 'Crypt/Blowfish.php'; 5 6$mode = 'cbc'7$secretKey = '任意の鍵'8$iv = '任意の値'9$blowfish = Crypt_Blowfish::factory($mode, $secretKey, $iv); 10$target = 'hogehoge'; 11$binary = $blowfish->encrypt($target); 12$result = base64_encode($binary); 13echo $result

Rubyで復号化します。
blowfish.rb

ruby

1#Rubyでblowfishで暗号化 2require 'openssl' 3require "base64" 4secret_key = '任意の鍵' 5iv = '任意の値' 6cipher = OpenSSL::Cipher::BF.new(:CBC) 7cipher.encrypt 8cipher.key = secret_key 9cipher.iv = iv 10target = 'hogehoge' 11binary = cipher.update(target) + cipher.final 12result = Base64.encode64(binary) 13p result

結果を比較したのですが、同じ文字列になりません。

他にも同じようなことをやっている方がいらっしゃったのですが、
参考にしてもうまくいきません。
http://weblog-1.github.io/ruby/2015/11/14/blowfish-ruby-php

同じようなことをされたことがある方、うまく行かない理由を教えて下さい。何卒よろしくお願い致します。

mpyw, Touhoku👍を押しています

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

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

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

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

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

guest

回答1

0

ベストアンサー

鍵長を調整するだけですね。また今更太古のPEARを使うのも時代錯誤ですし,PHPにもOpenSSL関数群はあるので,そちらを使いましょう。PHPのOpenSSL関数群は鍵長を自動調整してくれるようです。

ruby

1require 'openssl' 2require 'base64' 3 4target = '平文平文' # 任意のデータ 5secret_key = 'パスワードパスワード' # 任意の鍵 6iv = "\x00\x01\x02\x03\x04\x05\x06\x07" # 8バイトの初期化ベクトル 7 8cipher = OpenSSL::Cipher::BF.new(:CBC) 9cipher.encrypt 10cipher.key_len = secret_key.bytesize # 【ここがポイント】 11cipher.key = secret_key 12cipher.iv = iv 13 14p Base64.encode64(cipher.update(target) + cipher.final) # => IbcSE/32Ed/DlW/88UxrmQ==

php

1<?php 2 3$target = '平文平文'; # 任意のデータ 4$secret_key = 'パスワードパスワード'; # 任意の鍵 5$iv = "\x00\x01\x02\x03\x04\x05\x06\x07"; # 8バイトの初期化ベクトル 6 7echo openssl_encrypt($target, 'bf-cbc', $secret_key, 0, $iv); # => IbcSE/32Ed/DlW/88UxrmQ==

Rubyの実装がPHPよりもイケてないのはわりと珍しいですね

投稿2016/11/01 17:56

編集2016/11/01 19:09
mpyw

総合スコア5223

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問