2012-02-24 2 views
0

Travail sur la conversion d'une routine de chiffrement Visual Basic SHA-256 pour fonctionner dans LotusScript.VB ASCB dans LotusScript?

Fonctionne bien sauf pour la commande AscB de VB.

Trouvé: "Utilisez la fonction AscB pour retourner le premier octet d'une chaîne contenant des données d'octets."

Impossible de trouver la même chose dans LotusScript. Voir la commande LS CByte se rapproche: "CByte renvoie une expression qui a été convertie en octet."

Ne pas voir moyen de le faire retourner seulement le premier octet de l'expression.

Des suggestions?

Derek

+0

Puis-je vous demander pourquoi vous n'utilisez pas simplement un champ crypté? – leyrer

+0

BTW: SHA-256 n'est pas le cryptage. C'est une fonction de hachage cryptographique unidirectionnelle. –

Répondre

2

AscB ne convient pour les chaînes de codage de caractères sur un seul octet. Toutes les données de chaîne LotusScript sont représentées par un codage Unicode codé sur deux octets UTF16.

La fonction LotusScript Uni() renvoie une longueur contenant la valeur entière du caractère Unicode. Comme l'entrée est un caractère double octet, la valeur retournée par Uni() va de 0 à 65535. Si vous voulez obtenir les valeurs de chacun des deux octets, le code comme celui-ci fera l'affaire:

Dim ws As New NotesUIWorkspace 
Dim s1 As String 
Dim u1 As Long 
Dim u2 As Long 
Dim lowbyte As Integer 
Dim highbyte As Integer 
Dim b1 As Byte 
Dim b2 as Byte 

s1 = "Ʃ"  

u1 = Uni(s1) 

lowbyte = u1 Mod 256 
highbyte = (u1 - lowbyte)/256 

b1 = Cbyte(lowbyte) 
b2 = Cbyte(highbyte) 

Call ws.Prompt(prompt_ok,"test",s1 + " " + Cstr(Cint(b1)) + " " + Cstr(Cint(b2))) 
+0

Merci. Cela a du sens pour moi. – Derek

0

Would Asc, LeftB et justeB faire ce que vous avez besoin?

Dans mes tests ...

Lenb("A") = 2 

Leftb("A", 1) = "A" 

Asc(Leftb("A", 1)) = 65 

Leftb("A", 2) = "A" 

Asc(Leftb("A", 2)) = 65 

Asc(Rightb(Leftb("A", 2), 1)) = 0