我想将datetime var编码为一个8字节的字母数字字符串,以后可以解码。我不需要太多安全措施。
201603301639 -> X5AHY6J9
反之亦然。
答案 0 :(得分:0)
数字形式999912312359
中的最高日期值适合Double,当转换为Base36时,会输出符合您要求的"CRCPZ21Z"
字符串。
使用编码器功能here和此解码器:
Function base36decode(ByRef base36 As String) As Double
Const alphabet As String = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
base36decode = InStr(1, alphabet, Right(base36, 1), vbTextCompare) - 1
For i = Len(base36) - 1 To 1 Step -1
base36decode = base36decode + 36 ^ (Len(base36) - i) * (InStr(1, alphabet, Mid(base36, i, 1)) - 1)
Next i
End Function
你可以:
x = ConvertBase10(999912312359, "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ")
?x
CRCPZ21Z
?base36decode((x))
999912312359
这是编码,而不是加密。对于弱混淆,只需在每个例程使用的字母串中切换字符顺序,或对输入值执行一些任意算术。