はじめに
nemのトランザクションには、任意のメッセージがつけられます。
カタパルトも同様で、任意のメッセージがつけられます。
これまでは、平文メッセージだけだったのですが、暗号化メッセージが送れるようになりました。
平文メッセージは、1023バイト、おおよそ半角1023文字まで可能でした。暗号化メッセージではどうなっているのか試してみます。
環境
このウォレットを使います。
以下のように、平文か暗号化かを選べます。暗号化の際には、受信者の公開鍵が必要になります。別に受信者のでなくてもよいのですが、そうすると受信者は復号できなくなります。
また、メッセージ欄は、1023を超えて入力できます。超えた場合、カウンターが赤くなるだけです。
あと、一時的に、送信した際にトランザクションのバイト列とその長さを表示するようにしました。
時がたつと再現性がなくなるかもしれないですが、その時にはカタパルトの仕様もまた変わっている可能性があるので、気にしないでおきます。
接続先
やってみる
平文
1023文字
送れます。
1024文字
送れませんでした。
暗号文
447文字
送れます。
448文字
送れませんでした。
考察とか
暗号化したメッセージのサイズが1023バイト以下
元のメッセージが447文字の場合、暗号化メッセージは993バイトになりました。
また、元のメッセージが448文字の場合、暗号化メッセージは1025バイトになりました。
なので、暗号化したメッセージが1023バイトを下回っている必要があるということになります。
128bitのブロック長
元のメッセージが432~447文字の場合、暗号化メッセージは同じサイズになりました。
これは、使っているアルゴリズムが、固定サイズで区切って処理しているということになると思います。
メッセージの暗号化には、AESが使われています。該当のコードは以下になります。
AESでは、ブロック長が128bitなので、16文字増える毎に暗号化メッセージのサイズが変わる感じだと思います。
おわりに
平文は1023文字まで。
暗号化する場合は447文字まで。