パスワード(2通りの暗号化)同士の値一致確認について

AMY59
Tera Contributor

お世話になっております。

現在要件として、2つの異なるテーブルのパスワード(2通りの暗号化)フィールドの値を照合し

もし一致したらあるTrue/Falseフィールドの値をTrueにするというものを受けていますが

そちらを実装するための方法が不明のため、どなたかご教示いただくことは可能でしょうか?

よろしくお願いいたします。

1 件の受理された解決策

iwai
Giga Sage

フィールドタイプ Password (2 Way Encrypted) は GlideEncrypter を使うことで 復号化してパスワードが一致しているか判定できます。

GlideEncrypter | ServiceNow Developers

// インポートセット データーソースの パスワードを復号化して表示
var gr = new GlideRecord("sys_data_source");
gr.get('11cb5d112ff38110828ad6c6f699b656');
gs.info(new GlideEncrypter().decrypt(gr.scp_password));// Password (2 Way Encrypted) 復号表示

元の投稿で解決策を見る

2件の返信2

Zengame
Kilo Guru

お世話になります。

特定のワークフローで、二つのフィールドを比較して、それが一致したらまた別のフィールドをTrueにするのはそれなりに簡単かと思いますが、問題は比較する別々の暗号化されているパスワードフィールドかと思います。

フィールドA XというパスワードをE1という暗号化方式で暗号化した結果が入っている E1(X) とします
フィールドB XというパスワードをE2という暗号化方式で暗号化した結果が入っている   E2(X)とします

この場合、当然ですが、E1(X)とE2(X)は異なるので、直接比較しても絶対に一致しません。
そこでどのように比較するかですが、
1.復号化の手順がわかっていれば、ワークフローのどこかで E1(X)を復号化したXとE2(X)を復号化したXを比較すれば良いのですが、通常この復号化手順はadminであっても開示されないのが普通かと思います。
2.厳密には当初のご要件と違ってしまいますが、 X(暗号化前)をハッシュ化したものをフィールドAとBに保管しておき、特定のタイミングでそのハッシュ値同士を比較する
の二つが思いつきました。1と2の組み合わせもありうるかもです。

元のパスワードを平文に戻さないでやる方法がなかなか見つからず、また2については、正直あんまり意味ないですが、元々のご要件が通常のやり方だとかなり難しいかなと想定しています。

iwai
Giga Sage

フィールドタイプ Password (2 Way Encrypted) は GlideEncrypter を使うことで 復号化してパスワードが一致しているか判定できます。

GlideEncrypter | ServiceNow Developers

// インポートセット データーソースの パスワードを復号化して表示
var gr = new GlideRecord("sys_data_source");
gr.get('11cb5d112ff38110828ad6c6f699b656');
gs.info(new GlideEncrypter().decrypt(gr.scp_password));// Password (2 Way Encrypted) 復号表示