古い記事
ランダムジャンプ
新しい記事
どこかのウェブサービスにアクセスするためのプログラムのソースコードにパスワードを直書きすることがある。

自宅で一人でプログラミングしてるときなら問題ないが、他の人が後ろからPCの画面を覗き込むかもしれない場面では直接パスワードを書くのはちょっと心配。

ということでそういう場面においてソースコードには、
(1)ちら見しただけでは覚えられない程度に暗号化したパスワード、
(2)それをデコード(複合化化)する短いコード片、
の二つを記述する方式を提案する。

記憶力がものすごくよい人には効果がないけど、まあそこはリスクとの兼ね合いってことでよろしく。

以下テストコード(暗号化処理と複合化処理)と実行結果。

コード(ungo.pl):
#!/usr/bin/perl
use strict;
use warnings;
my $pw = shift @ARGV;
print "original:$pw\n";
$pw =~ s%(.)%join"",map{tr/0-9a-f/a-p/;$_}int(rand(10)),unpack('H2',$1)%ge;
print "encoded:$pw\n";
$pw =~ s%.(..)%($a=$1)=~tr/a-p/0-9a-f/;pack('H2',$a)%ge;
print "decoded:$pw\n";

引数に生パスワードを入れて実行:
% ./ungo.pl this.is-pw
original:this.is-pw
encoded:ehehgiagjihdgcoagjihdhcnahabhh
decoded:this.is-pw

「encode」の文字列と複合化処理のコード片を目的のソースコードに貼ればOK。
適用前:
my $email = 'yto@example.com';
my $password = "this.is-pw";
適用後:
my $email = 'yto@example.com';
my $password = "ehehgiagjihdgcoagjihdhcnahabhh";
$password =~ s%.(..)%($a=$1)=~tr/a-p/0-9a-f/;pack('H2',$a)%ge;

どうでしょう?

ref.
- [を] 手軽な暗号化[2003-07-24-1]