またお世話になりますm( __ __ )m
PEAR の BlowFish を用いての暗号化、復号化についての質問です。
例えば、"hello" という文字列を暗号化します。
そして、
$_str = $_blowfish->decrypt($_crypt_str);
と復号した時に、
取得した文字列 $_str は 8byte に満たない部分が \0 で埋まってきます。すなわち "hello\0\0\0" となります。
ちなみに "hello_World" を暗号化して復号すると "hello_World\0\0\0\0\0" となります。
私が調べた限りでは、8byte で割り算した余りの部分が \0 で埋められてくるという仕様?なのかバグなのからしいです。
とりあえずそのままでは使い物にならないので、
$_trim_str = rtrim($_str);
として、一応期待通りの動きをしていますが、こういう安易な使い方でよろしいのでしょうか?
そもそも復号文字列が 8 byte 余り部分を \0 で埋めてくるなどと言うのは私の使い方が間違っているかと疑わざるをえません。
どなたかご存知の方いましたらこの辺のモヤモヤをスッキリさせていただけませんでしょうか?
ちなみに暗号化モードは CBC で、初期化ベクトルは 8 byte です。
No.2ベストアンサー
- 回答日時:
の真ん中より下の方に
>で、ここで注意しなきゃいけないのは、
>暗号化する文字列は8の倍数桁じゃないとダメってトコ。
>つまり、6文字の場合は+2バイト、12文字の場合は+4バイト分
>パディング(文字埋め)してあげないといかんのです。
とあります。
また、こちらはPerlのBlofishの説明ですが、
http://perldoc.jp/docs/modules/Crypt-Blowfish-2. …
「注意」に
>8バイトよりも多く暗号化しないのであれば、あなたのデータは 正確に長さ8バイトでなければなりません。必要であれば独自にパディングしてください。
とあります。
なので正常な動作のようです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- フリーソフト BIOS.binをバイナリエディタで開くと ascii 変換しても、暗号化されていて何か分からない文 6 2022/07/11 03:34
- その他(コンピューター・テクノロジー) 下に書いたの条件でgoogleアカウントの復旧方法等を教えてください。 1 2023/02/06 23:32
- その他(形式科学) RSA暗号について 1 2022/06/01 00:16
- C言語・C++・C# sprintf()の使い方について 1 2022/08/17 16:16
- Wi-Fi・無線LAN ルーターの暗号化キーはなぜ初期値から変更するの? 2 2022/08/11 16:28
- その他(セキュリティ) HDDのデーターを暗号化したい。 3 2022/11/08 08:33
- その他(プログラミング・Web制作) python質問 1 2023/08/14 11:54
- その他(コンピューター・テクノロジー) 通信しない場合はワンタイムパッドは絶対に安全な暗号ですよね? ワンタイムパッドは解読不可能な暗号です 2 2023/08/16 20:18
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
10Mバイトて文字数に すると何...
-
「1TB」のHDDに日本語は何字入...
-
UTF-8で5~6バイトになる文字コ...
-
文字列の最後の一字を削除
-
エクセルシート名の制限を変更...
-
日本語で関数名等を記述するの...
-
sedコマンドで全ての2バイト文...
-
リトルエンディアンの1byteデー...
-
COBOLのCOMP形式について
-
64bit対応
-
ビットからバイトへの変換
-
バイト列とバイナリ列の違いが...
-
char str[256]の256の意味は?
-
SQLで1バイト、2バイト混在...
-
機種依存文字をチェックしたい。
-
Excel VBA で Oracle CLOB型カ...
-
COBOLでハーフバイト数値を読む...
-
ワイド文字のバイト数が取得で...
-
Blowfish の復号時の挙動について
-
質問です。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
10Mバイトて文字数に すると何...
-
UTF-8で5~6バイトになる文字コ...
-
char str[256]の256の意味は?
-
エクセルシート名の制限を変更...
-
COBOLのCOMP形式について
-
「1TB」のHDDに日本語は何字入...
-
バイナリとBCDコード
-
ビットスワップとバイトスワッ...
-
ピクセル,dpiから容量(バイト...
-
バイト列とバイナリ列の違いが...
-
SQLで1バイト、2バイト混在...
-
【VB2005】テキストボックス内...
-
Javaで日本語1文字のバイト数
-
3バイト文字(UTF-8)をprintfで...
-
1KBが1024byteな理由
-
C++ Builderで文字列をバイトに...
-
機種依存文字をチェックしたい。
-
半角、全角の判別方法
-
文字コードの利点・欠点について
-
64bit対応
おすすめ情報