Aizu Online Judge を少しやってみる

ホンの すこしだけTopCoderをやったことがあるので比較すると、

TopCoder

  • Class名や引数、戻り値が決まっている
  • 英語オンリーなので、英語がある程度 読めないと問題が理解できない。
  • 全体的に問題が難しいような気がする
  • 問題が簡単、中ぐらい、無難しい。で一セット
  • 必ず制限時間がある(時間が経つに連れてポイントがダウン)
  • ツールが揃っている
  • 公式サイトが分かりにくい

Aizu Online Judge

  • Classを作るのでなくて、普通にint main()で始まり return 0; で終わるプログラムを作る
  • 英語と日本語の両方の問題文がある。見たところ、日本語の問題の方が多いように感じる
  • 問題が比較的解きやすい気がする
  • 問題が難易度ごとに分けられている
  • 制限時間が基本的に無い
  • ツールの数は少ない
  • 公式サイトが分かりやすい

パット思いつくだけで、こんだけあります。

ガッツリやるならTopCoder、
のんびりやるならAizu Online Judgeがいいと思う。
僕にはAizu Online Judgeが合っていそうです。のんびり がいいので@@

RSA 公開鍵と秘密鍵の仕組み

RSA暗号化についてメモ

日本語より式の方がわかりやすいと思うので式で
x , y                           ( xとyは任意の素数)
n * ( x – 1 ) * ( y – 1 ) + 1 = p*q  ( nは任意の自然数)
x * y
(p , x * y) と (q, x* y) のセットが鍵
どちらが秘密鍵でも公開鍵でもおkです。

えらく複雑なことしてるのかと思いきや、
数字を(p * q)乗して、mod (x * y)すると元の数字に戻るという、数字の不思議を利用した暗号化でした。

試しにx = 3, y = 11 とすると、p * q = 21となり p = 3, q = 7となります。
適当に 5 を 21 乗して、mod (x * y)すると (476837158203125 mod 33) = 5 となり復号できます。不思議だ!

一気に21乗すると、いきなり元の値に戻っていまうので、21を3と7に分割します。
つまり、今回の5を暗号化した結果は、 5^3 mod (x * y) = 26となります。
復号するには、26 ^ 7 mode (x * y) = 5となり復号できました。

この性質を利用して、
鍵Aで暗号化したけど鍵Aでは復号できない、鍵Bでは複合できる
鍵Bで暗号化したけど鍵Bでは復号できない、鍵Aでは複合できる

っていう奇妙な仕組みが実現してるみたい。(公開鍵、秘密鍵)

今回、素数 3 と 11 を使って切りの良い、鍵 3 と 7 が出来たけど、
素数が 5 と 11とかだと、 p * q = 41 となり二つに分割できません。。 41が素数なので無理です。(整数じゃないのもおkなのかな?
さらに、p * q = 29962177 だと p と q が想像できない! ( x = 8287 y = 3617
これは上手いこと考えないとプログラムに出来ない!実際どうやって作ってるんだろう。

画像の中に隠しZipファイルを作成

なんとWindowsの標準コマンドだけで、jpgやpngの中にzipファイルを埋めこむことができます。

コマンドは、

copy /b aaa.jpg + bbb.zip ccc.jpg

これだけです。

試しに作った画像がこれです↓

conceals_zip
conceals_zip

このファイルの拡張子を.zipに変えて開くと…  通常のZipファイルとして開かれます。

jpgファイルはファイルの先頭から読み込み、(最近のアーカイバでは)Zipファイルはファイルの後尾から読み込むため こういった裏技ができるようです。

残念ながら、Windows標準のアーカイバではZipファイルを先頭から読み込む らしいのでエラーがでてしまいます。

アーカイバは、winrarで開けることは確認してます。

jpgの他、 png bmp gif そして、、、pdf..で開けることも確認しています。

悪用厳禁。

固定キーでプロンプト起動

面白いネタなのでメモ
WindowsのShiftキーを5回押すと出てくる固定キー機能はwindwos/system32/setch.exeをダイレクトに呼び出してます
ログイン画面でも呼び出せてしまいます。

つまりsetch.exeを他のexeに差し替えるだけで好きなアプリケーションを起動出来ます。
かなり古くからあるネタらしいです。

vistaからsystem32にあるデータはTrustedinstallerサービスで保護されている(administratorsより権限が高いです)ので注意です
といっても所有者を変更すれば意味はないですが。

というわけで 5回押すとcmd.exeを起動するコマンドは 管理者権限で、

cd C:\Windows\System32
takeown /F sethc.exe /A
icacls sethc.exe /grant administrators:F
rename sethc.exe sethc_back.exe
copy cmd.exe sethc.exe

これだけでShift5回でcmdが起動します。
batファイルにでも書いておけばいつでも出来ます。

悪用厳禁
悪用厳禁。
悪用厳禁。。

手軽にPCの動作をスッキリさせる方法

自分がよくやる手法をメモ

最近PCが重いなーと思っていたら、一度新しいユーザーを作成してログインしてみてください。
初期の壁紙や設定の雰囲気と、アイコンで埋まったデスクトップが消えて、まさに貴方の動作が軽くなります。 間違いないです。
もちろん貴方の動作だけでなく、肥大化したユーザープロファイルや無駄なスタートアップが初期化されてPCの動作も軽くなります。

プログラムフォルダから必要なアプリケーションへのショートカットを作れば、OSを入れなおそうなんて気は失せてしまいます。

2ヶ月経って、前のユーザーで使っていた データへアクセスする気がなければ、もうユーザーフォルダごと消してしまえば良いです。

スッキリ!