上下文:我正在對Lotusscript實施SHA-256哈希處理。在LotusScript中無符號長整數?如何長時間關閉溢出檢測?
散列工作在32位。 LotusScript只有簽名長。當結果大於2,147,483,647時,我們得到溢出。
問題:如何關閉溢出檢測 on Long?
如果不可能,是否有解決方法?我在想什麼Richard Schwartz在http://femkegoedhart.com/2012/02/05/lotusscript-timedifference-long-data-type-grrr/有wr,我怎麼能使用NotesDateTime來解決我的問題?
我應該「忘記」,但隨後如何在LotusScript中散列(好吧,我能想到用LS2J並使用標準的java SHA 256)
當然,如果你已經有了SHA-的LS實施256這也是:-)
感謝您的幫助了良好的反響,我覺得有點失落......代碼
部分:
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)
NB我根據我的實現Ø n工作Chris Veness:http://www.movable-type.co.uk/scripts/sha256.html
我還沒有研究SHA-256,所以我發佈這個評論,而不是作爲答案;如果SHA-256特意針對32位無符號操作進行優化,則可以忽略此評論。恕我直言,LotusScript(或類似語言)中的任何加密函數都應該使用字節數據類型的數組來實現。另外,請記住,LotusScript中的本地字符串是Unicode(UTF-16),所以您必須非常小心 - 特別是如果您希望將接受字符串輸入的代碼驗證爲UTF-8,那麼您的散列應該被驗證。 –
嘗試將算法分成更小的步驟並將部分結果轉換爲適合變量極限。 –