コンテキスト: Lotusscript に SHA-256 ハッシュを実装しています。
ハッシュは 32 ビットで動作します。LotusScript はLongのみに署名しています。結果が 2,147,483,647 より大きい場合、overflow が発生します。
質問: Longのオーバーフロー検出をオフにする方法は?
不可能な場合、回避策はありますか? Richard Schwartzがhttp://femkegoedhart.com/2012/02/05/lotusscript-timedifference-long-data-type-grrr/に書いていることを考えていたのですが、NotesDateTime を使用して問題を回避するにはどうすればよいでしょうか?
「これを忘れる」必要がありますが、Lotusscript でハッシュする方法 (わかりました、LS2J を使用し、標準の Java SHA 256 を使用することが考えられます)
もちろん、SHA-256 の LS 実装があれば、それも良い反応です :-)
助けてくれてありがとう、私は少し迷っています...
コードの一部:
Dim T1 As Long
Dim h2 As Long
Dim Sigma1 As Long
Dim K_t As Long
h2=1541459225
Sigma1 = 21895337
K_t=1116352408
MsgBox String(32-Len(Bin$(h2)),"0")+Bin$(h2)+" " +"Bin$(h2)"+Chr$(13)+ _
String(32-Len(Bin$(Sigma1)),"0")+Bin$(Sigma1)+" " +"Bin$(Sigma1)"+Chr$(13)+ _
String(32-Len(Bin$(K_t)),"0")+Bin$(K_t)+" " +"Bin$(K_t)",,"DEBUG"
T1 = h2 + Sigma1
MsgBox "T1 = " & T1 & " binary representation:" + String(32-Len(Bin$(T1)),"0")+ Bin$(T1)
T1 = h2 + Sigma1 + K_t ' **this line cause overflow**
MsgBox "T1 = " & T1 & " binary representation:" + String(32-Len(Bin$(T1)),"0")+ Bin$(T1)
注: 実装はChris Venessの作業に基づいています: http://www.movable-type.co.uk/scripts/sha256.html