Changes between Version 3 and Version 4 of PythonCamellia


Ignore:
Timestamp:
05/06/06 16:28:30 (13 years ago)
Author:
sgk
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • PythonCamellia

    v3 v4  
    7070}}} 
    7171 
    72 特にこのように、Pythonの2.3と2.4とでは、32ビット整数の場合の`MSB`が`1`であるような整数の取り扱いが異なります。2.4では、小さい整数(32ビット整数)と長整数の区別が無く、必要に応じて使い分けられるそうです。アセンブラとか`C`とかからこの業界に入った者としては、どうも居心地が悪いですが、仕方ありません。ごちゃごちゃ考えてややこしい計算で高速化しようという悪あがきは、Pythonでは無駄というより逆効果です。 
     72特にこのように、Pythonの2.3と2.4とでは、32ビット整数の場合の`MSB`が`1`であるような整数の取り扱いが異なります。2.4では、小さい整数(32ビット整数)と長整数の区別が無く、必要に応じて使い分けられるそうです。アセンブラとか`C`とかからこの業界に入った者としては、どうも居心地が悪いですが、仕方ありません。ごちゃごちゃ考えてややこしい計算で高速化しようという悪あがきは、Pythonでは無駄というより逆効果です。具体的な対策は、全ての定数に`L`をつけるだけです。Python 2.4では無意味ですが、Python 2.3では必要です。 
    7373 
    7474鍵生成(`Ekeygen()`)での、定数表を使ったループ演算は、べた書きに変更しました。この方が見通しが明るい。ただ、タプルの足し算をたくさんやっているのが、効率の点で気になります。たぶん、タプルのオブジェクトを作っては毅を繰り返してるんですよ。鍵生成はそんなにたくさんやることではないから、許してください。 
    7575 
    76 暗号化複合化のややこしいループも、べた書きに展開しました。かなりわかりやすくなったはずです。暗号の仕組みがちょっと見えた気がします。`feistel`の「-2オフセット」なんてのは`C`ならではであって、Pythonではできないので、`feistel1()`と`feistel2()`の二つを作って使い分けています。 
     76暗号化複合化のややこしいループも、べた書きに展開しました。かなりわかりやすくなったはずです。暗号の仕組みがちょっと見えた気がします。`feistel`の「-2オフセット」なんてのは`C`ならではであって、Pythonではできないので、`feistel1()`と`feistel2()`の二つを作って使い分けています。 
    7777 
    78 開発の過程でJava版も読みましたが、Java版は作りがいまいちな気がします。`C`版を逐語訳した感じです。もう少しJavaらしい書き方があるんじゃないでしょうか。個人的にはJavaは得意ではないので憶測です。ただ、もしかしたら、携帯電話のJavaなど、ライブラリやリソースに制限がある環境で使用することを考えてのことかもしれません。NTTの方は、タブ=4のようです。タブ=8で見ると、タブと空白の混在でインデントが壊れてます 
     78開発の過程でJava版も読みましたが、Java版は作りがいまいちな気がします。`C`版を逐語訳した感じです。鍵長128ビットにしか対応していませんし。個人的にはJavaは得意ではないので憶測ですが、もう少しJavaらしい書き方があるんじゃないでしょうか。ただ、もしかしたら、携帯電話のJavaなど、ライブラリやリソースに制限がある環境で使用することを考えてのことかもしれませんね。NTTの方は、タブ=4のようです。タブ=8で見ると、タブと空白の混在でインデントが壊れてます。タブ=8にするか、全部空白に変換しておいて欲しかった 
    7979 
    8080== リンク ==