暗号化の例

とある事情で暗号化を実際に行うコードを実装する事があったので、ためしに置いておきます。
crypt.cpp

これは暗号化というのも恥ずかしい、暗号化する方法さえ知ってしまえば鍵を知らずとも一瞬で展開余裕な暗号です。
まぁ、自分が普段解析するようなファイル郡も大体こんなレベルですので、一般に改造対策として施す分には十分かと。

本格的にやりたいならば、同一判定をきちんとしたハッシュ関数にして、xorする値はメルセンヌツイスターにして、鍵としてメルセンヌツイスターの種を扱う感じが良いでしょう。
たぶんこれで、暗号化方法がばれても鍵がばれない限りは並の人間には解かれません。(※鍵のbit長が32bitだったりすると総当りでいけるかもしれませんが)
さらに絶対性を求めるならば、メルセンヌツイスターで取得した乱数を元にSHA-1で算出したハッシュをxorに使えば完璧です。
そんなことしても、exeファイルを配布するなら中に鍵が入っているので意味がなくなりますがね。

雑記?

理解のアプローチ。

物事を説明するに当たって
ぶっちゃけ全体像はいいので、原点もしくは原因あるいは理由を最初に教えて欲しいといつも思う。

自分の脳みそはパース性能が良くないので、入れる情報が多ければ多いほど理解が大変になるのだ。
基本大本さえ知っていれば大枠は推測可能であるし、現状説明だけでは誤解を招くことが多いのだから、一石二鳥というものだろう。

といいつつ、自分はそういう説明を出来ていない。
周囲からもそういった説明がなされる事は稀なので、意識するならもっと別の方法にするべきではあるのだろうが。


ギャップと感情。

笑うにしろ喜ぶにしろ怒るにしろ悲しむにしろ、強い感情というのは大抵予想とのギャップから生まれるらしい。

そういわれてみると、確かにそういう傾向があることがわかる。
けれど、ギャップがあれば良いというものではなく、ギャップが有ればあるほど良いにしろ悪いにしろ勘定が強くなるだけ、というあたりに気をつけなければならない。

たとえば、接客業に置いてマニュアル的に対応される事を期待しているとき、
マニュアルの範囲を超えてなんらかのサービスが行われると、喜ぶ人と憤る人のどちらもありうるという話だ。

これはどこに価値を見出しているかの違いで
たとえば常に変わらぬ対応に心地よさを覚えている場合、たとえ手間が減るとしても普段と異なる対応に不快感を覚えるだろう。
逆に、マニュアル徹底による質の向上を評価している人なら、マニュアル外までサービス提供されれば評価を上げるに違いない。

つまり、マニュアル外対応は一種の博打であり、きちんと検討された上で行われなければ、逆に評価を下げてしまうことがありうるということだ。

これはその他の感情にまつわるものでも同じだ。
人間の感情とは基本博打であり、絶対は存在しない。
結局、勝つ確率が高いか低いかの差でしかないのだから。

最初に習うプログラミング言語

最初に習う言語はその後の成長を方向付ける大きな要素の一つだと思う。
たとえば自分はPerl5から始め、ActionScript2、C言語と進んだため、
動的型付け言語のほうが理解しやすいなど、Perlに影響されている面が多い。

現在主に使う言語がC言語であるため、最初に触れる言語がC言語であればよかったのになと思うこともあるぐらいだ。

けれど、最近は一般言語の導入難度からJavaScriptを推奨する人も多い。

正直、JavaScriptを最初に勧めるのは
考え方の基盤として一般的によいとされるものとは程遠いと思うのだが、大丈夫なのだろうか?