- PR -

元の値と元の値のハッシュ値を関係付ける方法

投稿者投稿内容
なちゃ
ぬし
会議室デビュー日: 2003/06/11
投稿数: 872
投稿日時: 2005-09-06 15:08
引用:

unibonさんの書き込み (2005-09-02 23:41) より:

のような感じでできるかなと思います。3つなら有限の時間内に有限の情報量で出力できるでしょう。しかし10個位になると s の情報量が非常に多くなり、もう破綻してしまいます。


笑いました、この発想はなかった…
でもハッシュが状況により一意にならないのは、たいていの用途において厳しいでしょうね。
mio
ぬし
会議室デビュー日: 2005/08/25
投稿数: 734
お住まい・勤務地: 神奈川県
投稿日時: 2005-09-06 15:57
ハッシュはあくまで同じかどうかの比較であって、結果の大小には意味がないし…すっぱりあきらめるしか。
jk
ベテラン
会議室デビュー日: 2005/08/19
投稿数: 94
投稿日時: 2005-09-06 16:05
何をしたいのかが、よくわからないんですけど
ハッシュテーブルとリストや木を使えば解決できないですか?
要素が多ければそれだけリソースが必要ですけど。

やりたいことが、どんな事例なのかがわかればアイディアの出しようも
ありますけど、これだけの情報量ではサッパリ解かりませんね。
入力のパターンが何種類あるのかまったくそういうことに触れられていないので...

入力が無限空間であった場合に「無限空間->ハッシュ関数->有限空間」と変換して
しまったら、またもとの無限空間の関係性を再現することは不可能ですよ。
banboo
大ベテラン
会議室デビュー日: 2003/12/05
投稿数: 210
投稿日時: 2005-09-07 14:46
やりたいことは,ハッシュ値をとった状態で,Hash(M1),Hash(M2),Hash(M3)の関係を明らかにしたいのです.
つまり,Hash(M1)の優先順位が1,Hash(M2)の優先順位が2,Hash(M3)の優先順位が3
というように,優先順位の関係を明らかにしたいのです.

まず,やりたいことの背景として,
パラメータの値を隠蔽したいという点が挙げられます.
この点については,値のハッシュ値をとるという事で解決しました.
しかし,ハッシュ値をとる事により,パラメータ間の関係が
わからなくなってしまいました.
そこで,パラメータの値を隠蔽したまま,
パラメータの値の優先順位の関係を明らかにする方法が必要となりました.

なお,パラメータの数は,10個ぐらいを想定しております.
Edosson
ぬし
会議室デビュー日: 2004/04/30
投稿数: 675
投稿日時: 2005-09-07 15:20
1.情報を隠蔽するためにハッシュ値を計算した。
2.ハッシュ値から元の情報を利用したい。
3.「2.」は、情報を隠蔽するという「1.」の目的に矛盾します。

こんなところでどうでしょう。

<今更追記>
というか、何人もの方が、繰り返し同じことを指摘していますよね。

[ メッセージ編集済み 編集者: Edosson 編集日時 2005-09-07 15:22 ]
jk
ベテラン
会議室デビュー日: 2005/08/19
投稿数: 94
投稿日時: 2005-09-07 16:01
一郎様が提案されているように優先順位情報を付加するようにハッシュ関数をラップするような関数を作れば良いのじゃないでしょうか?

もしくは、あまり強度が必要でなければcryptを使ってみるとか....
ためしにサンプルを作ってみました、cryptはsaltと呼ばれる2バイトの値がそのまま文字列として残るのでこれを利用してみました。

[code]
//test.c
#include <unistd.h>
#include <stdio.h>

typedef struct _test_data_ {
int priority;
char *key;
}TESTDATA, *PTESTDATA;

int main()
{
TESTDATA testdata[] = { 1, "M1", 2, "M2", 3, "M3", -1, NULL};
PTESTDATA pp;
char pbuff[3];

for (pp=testdata; pp->priority != -1; pp ++){
sprintf(pbuff, "%02d", pp->priority);
printf("priority: %02d, org:%s, hash:%s\r\n",
pp->priority, pp->key, crypt(pp->key, pbuff));
}
return 0;
}
[code]
コンパイルは
cc -o test test.c -lcryptで出来ます。

実行結果
priority: 01, org:M1, hash:01sL7YSMt94x2
priority: 02, org:M2, hash:02/SEoMvaFtmQ
priority: 03, org:M3, hash:03brCmrZemJiI

いかがでしょう?
MMX
ぬし
会議室デビュー日: 2001/10/26
投稿数: 861
投稿日時: 2005-09-07 18:20
ハッシュのように短縮ではなく、ダミーbit挿入なら、ソート順を保って秘匿ッポクはなります。

1→ 1〜12のどれかの数を乱選択
2→ 13〜19のどれかの数を乱選択
3→ 20〜33のどれかの数を乱選択
以下同様に

レンジの対応を秘密にできて、パラメータの数が十分に多ければ。

ソート順を保持する限り、選択平文攻撃に耐性は無いですが

スキルアップ/キャリアアップ(JOB@IT)