vb.net字符编码 vbnet stringformat( 三 )


比如,我们对一个文本文件进行加密,这个文件是ANSI格式存储的 , 当从文件内容读入一行到内存的时候 , 自动将内容转换成了Unicode格式,如果这时候对其做加密运算,其结果和文件中字符串加密结果是不一样的 , 这样的结果如果让别人解密将无法得到正确的结果 。如果对读入内存的内容先做个转换(textline是读入内容):
plaintext = StrConv(textline, vbFromUnicode)
再对plaintext做加密,其结果就一样了 。
举例(按行做加密和解密运算,算法是AES+Base64):
[vb] view plain copy
Status = "Encrypting File"
Open FileName For Input As #1' 打开输入文件 。
Open FileName2 For Output As #2' 打开输出文件 。
Do While Not EOF(1)
Line Input #1, TextLine
plaintext = StrConv(TextLine, vbFromUnicode)
Status = "Encrypting Data"
m_Rijndael.SetCipherKey pass, KeyBits
m_Rijndael.ArrayEncrypt plaintext, ciphertext, 0
Status = "Converting Text to Base64"
TextLine = Base64Encode(ciphertext)
Status = ""
Print #2, TextLine' 将字符串写入文件 。
Loop
Close
[vb] view plain copy
Status = "Decrypting File"
Open FileName For Input As #1' 打开输入文件 。
Open FileName2 For Output As #2' 打开输出文件 。
Do While Not EOF(1)
Line Input #1, TextLine
Status = "Converting Base64 to Text"
ciphertext = Base64Decode(TextLine)
Status = "Decrypting Data"
m_Rijndael.SetCipherKey pass, KeyBits
If m_Rijndael.ArrayDecrypt(plaintext, ciphertext, 0)0 Then
Status = ""
Exit Sub
End If
TextLine = StrConv(plaintext, vbUnicode)
For i = 0 To UBound(plaintext)
Debug.Print plaintext(i)
Next i
k = InStr(1, TextLine, Chr(0), vbBinaryCompare)
If k0 Then TextLine = Left(TextLine, k - 1)'截掉加密时补的0
MsgBox TextLine"end"
Status = ""
Print #2, TextLine' 将字符串写入文件 。
Loop
Close
vb.net中string 转 unicode 编码Unicode编码是一个数组,其中每个元素代表一个位码,还有ASCII和UTF8两种编码格式 。
Unicode:
Dim bytes() As Byte() = System.Text.Encoding.Unicode.GetBytes("字符串")
ASCII:
Dim bytes() As Byte() = System.Text.Encoding.ASCII.GetBytes("字符串")
UTF8:
Dim bytes() As Byte() = System.Text.Encoding.UTF8.GetBytes("字符串")
关于vb.net字符编码和vbnet stringformat的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

推荐阅读