给贝贝的,Base64编码(带有Q和B编码)——VB.NET
敬业的IT人
互联网
佚名
2008-5-23 17:39:39
Option Strict Off
Option Explicit On
Option Compare Text
Imports Microsoft.VisualBasic.Compatibility
Namespace Blood.Com.ClassLib
Public Class Security
Private Const BASE64CHR As String = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="
Private Const Q_CODE_HDR As String = "=?ISO-8859-1?Q?"
Private Const B_CODE_HDR As String = "=?ISO-8859-1?B?"
Private Const CODE_END As String = "?="
Public Sub New()
MyBase.New()
Dim intPtr As Integer
For intPtr = 0 To 63
pbBase64Byt(intPtr) = Asc(Mid(BASE64CHR, intPtr + 1, 1))
Next
End Sub
Protected Overrides Sub Finalize()
MyBase.Finalize()
End Sub
'对字符串进行B或Q编码
Public Function EnText(ByRef sIn As String) As String
Dim iPtr As Short
Dim bNeedsEncoding As Boolean
Dim iMax As Short
Dim sChr As String
Dim sLine As String
Dim sQCode As String
Dim sBCode As String
Dim bytTmp() As Byte
bytTmp = System.Text.UnicodeEncoding.Default.GetBytes(sIn)
For iPtr = 0 To UBound(bytTmp)
If bytTmp(iPtr) > 126 Then
bNeedsEncoding = True
Exit For
End If
Next
EnText = sIn
'Q 编码
iMax = 54
For iPtr = 1 To Len(sIn)
sChr = Mid(sIn, iPtr, 1)
Select Case Asc(sChr)
Case 33 To 60, 62, 64 To 94, 96 To 126
sLine = sLine & sChr
Case 32
sLine = sLine & "_"
Case Else
sLine = sLine & "=" & Right("00" & Hex(Asc(sChr)), 2)
End Select
If Len(sLine) >= iMax Then
sQCode = sQCode & Q_CODE_HDR & sLine & CODE_END
If iPtr < Len(sIn) Then sQCode = sQCode & vbCrLf & vbTab
sLine = ""
End If
Next
sQCode = sQCode & Q_CODE_HDR & sLine & CODE_END
'B 编码
iMax = 42
sLine = sIn
Do While Len(sLine)
sBCode = sBCode & B_CODE_HDR & Encode(Mid(sLine, 1, iMax))
sBCode = Mid(sBCode, 1, Len(sBCode) - 2) & CODE_END
sLine = Mid(sLine, iMax + 1)
If Len(sLine) Then sBCode = sBCode & vbCrLf & vbTab
Loop
If Len(sQCode) < Len(sBCode) Then
EnText = sQCode
Else
EnText = sBCode
End If
End Func
- 最新文章
- 佳文推荐:运用VB.NET的面向对象的特征[05-23]
- 介绍MS Agent控件在VB.NET中的应用[05-23]
- 将sqldatareader转变成datatable的vb...[05-23]
- 使用.NET2.0编写COM组件供VB调用[05-23]
- 如何在VB.NET中创建Windows应用程序(一)[05-23]
- 如何在VB.NET中创建Windows应用程序(五)[05-23]
- 相关文章
- 佳文推荐:运用VB.NET的面向对象的特征[05-23]
- 介绍MS Agent控件在VB.NET中的应用[05-23]
- 将sqldatareader转变成datatable的vb...[05-23]
- 如何在VB.NET中创建Windows应用程序(一)[05-23]
- 如何在VB.NET中创建Windows应用程序(五)[05-23]
- 使用vb.net加密和解密文件。(好象英文灵,中文不灵)[05-23]
