する質問をすることでしか得られない、回答やアドバイスがある。暗号化する前の文字が一意を保たれていた場合、暗号化後も一意が保たれるでしょうか。"56337a62663866566c536333324a2f2b373676704e673d3d"}attachmentクリップ2気になる質問をクリップするクリップした質問は、後からいつでもマイページで確認できます。クリップした質問に回答があった際、通知やメールを受け取ることができます。自分も答えを知りたい質問者以外のユーザにも役立つ評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。質問の評価を上げたことを取り消します低評価-評価を下げられる数の上限に達しました評価を下げることができません1日5回まで評価を下げられます1日に1ユーザに対して2回まで評価を下げられます質問の評価を下げるteratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。コメントをしてください。送信する質問の評価を下げる機能の利用条件この機能を利用するためには、以下の事項を行う必要があります。19:35自分で試してみましたか。試したコードとその結果を提示していただけませんか。自分で試してみましたか。試したコードとその結果を提示していただけませんか。10:11自分で試してみた結果を提示して下さいませんか。自分で試してみた結果を提示して下さいませんか。指定しなければなりません。平文が一意であっても暗号文は一意になりません。ソルトを使わない暗号方式では、平文と暗号文が一対一に対応します。ブロック暗号では、ECBモードの場合はIVを使いません。このような暗号方式はもはや用いるべきではありません。使う暗号方式は、IVやナンスを暗号化の度に変えるという正しい運用をするかぎり、同じ平文が同じ暗号文になることはほぼありません。IVやナンスに固定した値を用いるべきではありません。IVを使わない暗号方式を使うことも、IVを固定して使うことも、するべきでない理由は同じです。そのようなものは、現在では十分な強度のある暗号方式とみなされていないからです。「でも、IVを固定すれば一意になるんでしょう。いう使いかたをしたっていいじゃないか」と思うかもしれません。暗号方式の設計で想定されている以外の運用をすれば、暗号化の強度は全く保証できなくなります。暗号化しているつもりで安心していると、すべて誰かに解読されてしまっているかもしれないのです。第4章「ブロック暗号のモード」.ところで、質問者さんのやりたいことが何なのか、いまひとつわかりません。規則性のない文字列にしたいのであれば、乱数を使うしかありません。やりたいことがわからないので憶測ですが、文字列を予測困難にする――次に生成される文字列を隠す――必要があるのかどうかも、再考すべきなのかもしれません。評価が高い回答ほどページの上位に表示されます。remove低評価0回答の評価を下げる下記のような回答は推奨されていません。評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。commentコメント投稿link+1復号できるデータは、暗号化する前のデータと一対一で結びつきます。復号可能な暗号アルゴリズムを使用するので、暗号化後の文字列は暗号化した文字列の中で一意のものとなります。別の場所で、初期化ベクトルのこと考えてないんじゃないの?と指摘を受けました。確かに、初期化ベクトルが異なれば、暗号化後の文字列が被る可能性がありますね^^;初期化ベクトルと暗号化後の文字列をセットとして考えた時、一意性が確保されます。補完させていただきます。評価が高い回答ほどページの上位に表示されます。remove低評価1回答の評価を下げる下記のような回答は推奨されていません。評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。10:03初期化ベクトルivも固定値を渡すようにしています。openssl_encrypt('1486601281','AES-256-CBC','aaatest',0,$iv)));記号をなくすために最終的にunpackしているのですがこれだとさすがに一意にはならないですよね初期化ベクトルivも固定値を渡すようにしています。さんも指摘していますが、何をやりたいのかよく分かりません。そもそも何をやりたいのか分かれば、適切な解なり検討方法なりのアドバイスが貰えると思います。さんも指摘していますが、何をやりたいのかよく分かりません。そもそも何をやりたいのか分かれば、適切な解なり検討方法なりのアドバイスが貰えると思います。一度整理されては?キャンセル完了するlink+1既に書かれていますが、復号可能である以上、元の平文と暗号文は1対1に対応します。複数の平文が同じ暗号文になることはありません。すると、「同じ文面では同じ暗号文が出てくる」ので、特に先頭に定型文があると「あ、定型的な文章を送っているな」と類推されてしまう危険性があります。※先頭のブロックが同一だと、暗号文も同一でスタートしますそこで初期化ベクトルという「先頭にランダムな1ブロックを加える」ことにより、「同じ文面でも異なる暗号文を出す」ようになっているわけです。※ゆえに初期化ベクトルのサイズは暗号化時のブロックサイズと一致していなければならないこのため復号時には暗号化で使用した初期化ベクトルも知っている必要があります。平文(あるいは暗号文)と初期化ベクトルの組が一意であれば、暗号化もしくは復号した結果も一意になります。評価が高い回答ほどページの上位に表示されます。remove低評価0回答の評価を下げる下記のような回答は推奨されていません。評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。commentコメント投稿link0質問の意図(やりたいこと)がうまく捉えられているか分かりませんが相異なる平文から1対1で対応する(=相異なる)ランダムに見える値を得たい。変換後の値から平文に戻す必要はない。ハッシュを使えばよいのでは?ハッシュ関数によっては1対1にならない可能性もありますが(詳しくは「衝突耐性」で調べてください)また、以下は自分の疑問に対する覚書なので無視してくださって結構です。問:暗号時にIVをランダムで生成した場合、復号側ではIVはどうやって知るのか?答(opensslでの実装)・ソルト+暗号データを渡す。ソルトは単なるランダム値なので見えてもよい。・(暗号鍵と)IVはパスワードとソルトからハッシュで生成する。暗号側でランダム生成。復号側は受け取って利用する。評価が高い回答ほどページの上位に表示されます。remove低評価0回答の評価を下げる下記のような回答は推奨されていません。評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。__callStaticで詰んでいます。頂いたご意見への回答は行っておりません。