當前位置:首頁 » 密碼管理 » vbmd5加密解密

vbmd5加密解密

發布時間: 2022-06-21 00:28:39

1. 求VB.NET的MD5演算法調用

下面是完整的類,可以設置任意密碼

'DES及md5加密解密----添加引用中添加對system.web的引用。
ImportsSystem.Security.Cryptography
ImportsSystem
ImportsSystem.Text
ImportsSystem.Web
'''<summary>
'''DES加密類
'''</summary>
'''<remarks></remarks>
PublicClassDESEncrypt
PublicSubDESEncrypt()
EndSub
PublicSharedFunctionEncrypt(ByValTextAsString)AsString
ReturnEncrypt(Text,"12345678")
EndFunction
PublicSharedFunctionEncrypt(ByValTextAsString,ByValsKeyAsString)AsString
()
DiminputByteArrayAsByte()
inputByteArray=Encoding.Default.GetBytes(Text)
des.Key=ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.(sKey,"md5").Substring(0,8))
des.IV=ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.(sKey,"md5").Substring(0,8))
DimmsAsNewSystem.IO.MemoryStream()
DimcsAsNewCryptoStream(ms,des.CreateEncryptor(),CryptoStreamMode.Write)
cs.Write(inputByteArray,0,inputByteArray.Length)
cs.FlushFinalBlock()
DimretAsNewStringBuilder()
DimbAsByte
ForEachbInms.ToArray()
ret.AppendFormat("{0:X2}",b)
Next
Returnret.ToString()
EndFunction
PublicSharedFunctionDecrypt(ByValTextAsString)AsString
ReturnDecrypt(Text,"12345678")
EndFunction
PublicSharedFunctionDecrypt(ByValTextAsString,ByValsKeyAsString)AsString
()
DimlenAsInteger
len=Text.Length/2
DiminputByteArray(len-1)AsByte
Dimx,iAsInteger
Forx=0Tolen-1
i=Convert.ToInt32(Text.Substring(x*2,2),16)
inputByteArray(x)=CType(i,Byte)
Next
des.Key=ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.(sKey,"md5").Substring(0,8))
des.IV=ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.(sKey,"md5").Substring(0,8))
DimmsAsNewSystem.IO.MemoryStream()
DimcsAsNewCryptoStream(ms,des.CreateDecryptor(),CryptoStreamMode.Write)
cs.Write(inputByteArray,0,inputByteArray.Length)
cs.FlushFinalBlock()
ReturnEncoding.Default.GetString(ms.ToArray())
EndFunction
EndClass
'以下是調用方法
PublicClassForm1
PrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton1.Click'加密
Dimstr_EncryptAsString=DESEncrypt.Encrypt("你要加密的文本,可以是任意長度","密碼,可以很長,如果省略這個參數就是默認的12345678")
EndSub
PrivateSubButton2_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton2.Click'解密
Dimstr_DecryptAsString=DESEncrypt.Decrypt("你要解密的文本,可以是任意長度","加密時用到的密碼,如果省略這個參數就是默認的12345678")
EndSub

2. MD5真的沒有可逆性么 求VB 中 MD5加密解密.

MD5
不支持反向解密的,別費這個心思了吧。
建議用替代法,直接把知道的Md5碼,覆蓋這個。

3. 用VB.net編寫一個加密解密軟體

"採用DES演算法"這個說法不明確,首先是使用多少位的DES進行加密,通常是128位或192位,其次是,要先把主密鑰轉化成散列,才能供DES進行加密,轉化的方法是什麼沒有明確,通常是md5,所以有的銀行卡說是128位md5 3DS就是指用md5轉換主密鑰散列,用DES進行加密,但是DES本身是64位(包含校驗碼),2DES是128位,3DES是192位,但是沒有2DES的叫法,所以128位、192位統稱3DES
要完整的md5+3DS實例,需要100分以上,要不到我的空間中查找相關的文章

4. 求vb md5加解密

代碼很多。仔細看先建一個類Class Mole 取名為ClsAPIMD5復制下面的代碼到類里:'API 做的MD5類Option Explicit
Private Declare Function CryptAcquireContext Lib "advapi32.dll" _
Alias "CryptAcquireContextA" ( _
ByRef phProv As Long, _
ByVal pszContainer As String, _
ByVal pszProvider As String, _
ByVal dwProvType As Long, _
ByVal dwFlags As Long) As LongPrivate Declare Function CryptReleaseContext Lib "advapi32.dll" ( _
ByVal hProv As Long, _
ByVal dwFlags As Long) As LongPrivate Declare Function CryptCreateHash Lib "advapi32.dll" ( _
ByVal hProv As Long, _
ByVal Algid As Long, _
ByVal hKey As Long, _
ByVal dwFlags As Long, _
ByRef phHash As Long) As LongPrivate Declare Function CryptDestroyHash Lib "advapi32.dll" ( _
ByVal hHash As Long) As LongPrivate Declare Function CryptHashData Lib "advapi32.dll" ( _
ByVal hHash As Long, _
pbData As Any, _
ByVal dwDataLen As Long, _
ByVal dwFlags As Long) As LongPrivate Declare Function CryptGetHashParam Lib "advapi32.dll" ( _
ByVal hHash As Long, _
ByVal dwParam As Long, _
pbData As Any, _
pdwDataLen As Long, _
ByVal dwFlags As Long) As LongPrivate Const PROV_RSA_FULL = 1Private Const ALG_CLASS_HASH = 32768Private Const ALG_TYPE_ANY = 0Private Const ALG_SID_MD2 = 1
Private Const ALG_SID_MD4 = 2
Private Const ALG_SID_MD5 = 3
Private Const ALG_SID_SHA1 = 4Enum HashAlgorithm
md2 = ALG_CLASS_HASH Or ALG_TYPE_ANY Or ALG_SID_MD2
MD4 = ALG_CLASS_HASH Or ALG_TYPE_ANY Or ALG_SID_MD4
md5 = ALG_CLASS_HASH Or ALG_TYPE_ANY Or ALG_SID_MD5
SHA1 = ALG_CLASS_HASH Or ALG_TYPE_ANY Or ALG_SID_SHA1
End EnumPrivate Const HP_HASHVAL = 2
Private Const HP_HASHSIZE = 4Function HashString( _
ByVal Str As String, _
Optional ByVal Algorithm As HashAlgorithm = md5) As String
Dim hCtx As Long
Dim hHash As Long
Dim lRes As Long
Dim lLen As Long
Dim lIdx As Long
Dim abData() As Byte ' Get default provider context handle
lRes = CryptAcquireContext(hCtx, vbNullString, _
vbNullString, PROV_RSA_FULL, 0) If lRes <> 0 Then ' Create the hash
lRes = CryptCreateHash(hCtx, Algorithm, 0, 0, hHash) If lRes <> 0 Then ' Hash the string
lRes = CryptHashData(hHash, ByVal Str, Len(Str), 0) If lRes <> 0 Then

' Get the hash lenght
lRes = CryptGetHashParam(hHash, HP_HASHSIZE, lLen, 4, 0) If lRes <> 0 Then ' Initialize the buffer
ReDim abData(0 To lLen - 1) ' Get the hash value
lRes = CryptGetHashParam(hHash, HP_HASHVAL, abData(0), lLen, 0) If lRes <> 0 Then ' Convert value to hex string
For lIdx = 0 To UBound(abData)
HashString = HashString & _
Right$("0" & Hex$(abData(lIdx)), 2)
Next End If End If End If ' Release the hash handle
CryptDestroyHash hHash End If

End If ' Release the provider context
CryptReleaseContext hCtx, 0 ' Raise an error if lRes = 0
If lRes = 0 Then Err.Raise Err.LastDllErrorEnd FunctionFunction HashFile( _
ByVal Filename As String, _
Optional ByVal Algorithm As HashAlgorithm = md5) As String
Dim hCtx As Long
Dim hHash As Long
Dim lFile As Long
Dim lRes As Long
Dim lLen As Long
Dim lIdx As Long
Dim abHash() As Byte ' Check if the file exists (not the best method BTW!)
If Len(Dir$(Filename)) = 0 Then Err.Raise 53

' Get default provider context handle
lRes = CryptAcquireContext(hCtx, vbNullString, _
vbNullString, PROV_RSA_FULL, 0) If lRes = 0 And Err.LastDllError = &H80090016 Then

' There's no default keyset container!!!
' Get the provider context and create
' a default keyset container
lRes = CryptAcquireContext(hCtx, vbNullString, _
vbNullString, PROV_RSA_FULL, CRYPT_NEWKEYSET)
End If

If lRes <> 0 Then ' Create the hash
lRes = CryptCreateHash(hCtx, Algorithm, 0, 0, hHash) If lRes <> 0 Then ' Get a file handle
lFile = FreeFile

' Open the file
Open Filename For Binary As lFile

If Err.Number = 0 Then

Const BLOCK_SIZE As Long = 32 * 1024& ' 32K
ReDim abBlock(1 To BLOCK_SIZE) As Byte
Dim lCount As Long
Dim lBlocks As Long
Dim lLastBlock As Long

' Calculate how many full blocks
' the file contains
lBlocks = LOF(lFile) \ BLOCK_SIZE

' Calculate the remaining data length
lLastBlock = LOF(lFile) - lBlocks * BLOCK_SIZE

' Hash the blocks
For lCount = 1 To lBlocks

Get lFile, , abBlock

' Add the chunk to the hash
lRes = CryptHashData(hHash, abBlock(1), BLOCK_SIZE, 0)

' Stop the loop if CryptHashData fails
If lRes = 0 Then Exit For

Next ' Is there more data?
If lLastBlock > 0 And lRes <> 0 Then

' Get the last block
ReDim abBlock(1 To lLastBlock) As Byte
Get lFile, , abBlock

' Hash the last block
lRes = CryptHashData(hHash, abBlock(1), lLastBlock, 0)

End If

' Close the file
Close lFile

End If If lRes <> 0 Then

' Get the hash lenght
lRes = CryptGetHashParam(hHash, HP_HASHSIZE, lLen, 4, 0) If lRes <> 0 Then ' Initialize the buffer
ReDim abHash(0 To lLen - 1) ' Get the hash value
lRes = CryptGetHashParam(hHash, HP_HASHVAL, abHash(0), lLen, 0) If lRes <> 0 Then ' Convert value to hex string
For lIdx = 0 To UBound(abHash)
HashFile = HashFile & _
Right$("0" & Hex$(abHash(lIdx)), 2)
Next End If End If End If ' Release the hash handle
CryptDestroyHash hHash End If

End If ' Release the provider context
CryptReleaseContext hCtx, 0 ' Raise an error if lRes = 0
If lRes = 0 Then Err.Raise Err.LastDllErrorEnd Function
使用時:Private Sub Form_Load()
Dim mymd5 As New ClsAPIMD5
Dim md5str As String
md5str = mymd5.HashString(" test", md5)
Set mymd5 = Nothing '用完釋放內存End Sub

5. 用VB實現MD5加密

md5加密運算是不可逆的,就是說不能通過那一串古古怪怪的東西算出它原始的樣子。

以下提供VB可用的16位和32位MD5加密函數代碼:

PrivateConstBITS_TO_A_BYTE=8
PrivateConstBYTES_TO_A_WORD=4
PrivateConstBITS_TO_A_WORD=32

Privatem_lOnBits(30)
Privatem_l2Power(30)

PrivateFunctionLShift(lValue,iShiftBits)
IfiShiftBits=0Then
LShift=lValue
ExitFunction
ElseIfiShiftBits=31Then
IflValueAnd1Then
LShift=&H80000000
Else
LShift=0
EndIf
ExitFunction
ElseIfiShiftBits<0OriShiftBits>31Then
Err.Raise6
EndIf

If(lValueAndm_l2Power(31-iShiftBits))Then
LShift=((lValueAndm_lOnBits(31-(iShiftBits+1)))*m_l2Power(iShiftBits))Or&H80000000
Else
LShift=((lValueAndm_lOnBits(31-iShiftBits))*m_l2Power(iShiftBits))
EndIf
EndFunction

PrivateFunctionRShift(lValue,iShiftBits)
IfiShiftBits=0Then
RShift=lValue
ExitFunction
ElseIfiShiftBits=31Then
IflValueAnd&H80000000Then
RShift=1
Else
RShift=0
EndIf
ExitFunction
ElseIfiShiftBits<0OriShiftBits>31Then
Err.Raise6
EndIf

RShift=(lValueAnd&H7FFFFFFE)m_l2Power(iShiftBits)

If(lValueAnd&H80000000)Then
RShift=(RShiftOr(&H40000000m_l2Power(iShiftBits-1)))
EndIf
EndFunction

PrivateFunctionRotateLeft(lValue,iShiftBits)
RotateLeft=LShift(lValue,iShiftBits)OrRShift(lValue,(32-iShiftBits))
EndFunction

PrivateFunctionAddUnsigned(lX,lY)
DimlX4
DimlY4
DimlX8
DimlY8
DimlResult

lX8=lXAnd&H80000000
lY8=lYAnd&H80000000
lX4=lXAnd&H40000000
lY4=lYAnd&H40000000

lResult=(lXAnd&H3FFFFFFF)+(lYAnd&H3FFFFFFF)

IflX4AndlY4Then
lResult=lResultXor&H80000000XorlX8XorlY8
ElseIflX4OrlY4Then
IflResultAnd&H40000000Then
lResult=lResultXor&HC0000000XorlX8XorlY8
Else
lResult=lResultXor&H40000000XorlX8XorlY8
EndIf
Else
lResult=lResultXorlX8XorlY8
EndIf

AddUnsigned=lResult
EndFunction

PrivateFunctionmd5_F(x,y,z)
md5_F=(xAndy)Or((Notx)Andz)
EndFunction

PrivateFunctionmd5_G(x,y,z)
md5_G=(xAndz)Or(yAnd(Notz))
EndFunction

PrivateFunctionmd5_H(x,y,z)
md5_H=(xXoryXorz)
EndFunction

PrivateFunctionmd5_I(x,y,z)
md5_I=(yXor(xOr(Notz)))
EndFunction

PrivateSubmd5_FF(a,b,c,d,x,s,ac)
a=AddUnsigned(a,AddUnsigned(AddUnsigned(md5_F(b,c,d),x),ac))
a=RotateLeft(a,s)
a=AddUnsigned(a,b)
EndSub

PrivateSubmd5_GG(a,b,c,d,x,s,ac)
a=AddUnsigned(a,AddUnsigned(AddUnsigned(md5_G(b,c,d),x),ac))
a=RotateLeft(a,s)
a=AddUnsigned(a,b)
EndSub

PrivateSubmd5_HH(a,b,c,d,x,s,ac)
a=AddUnsigned(a,AddUnsigned(AddUnsigned(md5_H(b,c,d),x),ac))
a=RotateLeft(a,s)
a=AddUnsigned(a,b)
EndSub

PrivateSubmd5_II(a,b,c,d,x,s,ac)
a=AddUnsigned(a,AddUnsigned(AddUnsigned(md5_I(b,c,d),x),ac))
a=RotateLeft(a,s)
a=AddUnsigned(a,b)
EndSub

(sMessage)
DimlMessageLength
DimlNumberOfWords
DimlWordArray()
DimlBytePosition
DimlByteCount
DimlWordCount

ConstMODULUS_BITS=512
ConstCONGRUENT_BITS=448

lMessageLength=Len(sMessage)

lNumberOfWords=(((lMessageLength+((MODULUS_BITS-CONGRUENT_BITS)BITS_TO_A_BYTE))(MODULUS_BITSBITS_TO_A_BYTE))+1)*(MODULUS_BITSBITS_TO_A_WORD)
ReDimlWordArray(lNumberOfWords-1)

lBytePosition=0
lByteCount=0
DoUntillByteCount>=lMessageLength
lWordCount=lByteCountBYTES_TO_A_WORD
lBytePosition=(lByteCountModBYTES_TO_A_WORD)*BITS_TO_A_BYTE
lWordArray(lWordCount)=lWordArray(lWordCount)OrLShift(Asc(Mid(sMessage,lByteCount+1,1)),lBytePosition)
lByteCount=lByteCount+1
Loop

lWordCount=lByteCountBYTES_TO_A_WORD
lBytePosition=(lByteCountModBYTES_TO_A_WORD)*BITS_TO_A_BYTE

lWordArray(lWordCount)=lWordArray(lWordCount)OrLShift(&H80,lBytePosition)

lWordArray(lNumberOfWords-2)=LShift(lMessageLength,3)
lWordArray(lNumberOfWords-1)=RShift(lMessageLength,29)

ConvertToWordArray=lWordArray
EndFunction

PrivateFunctionWordToHex(lValue)
DimlByte
DimlCount

ForlCount=0To3
lByte=RShift(lValue,lCount*BITS_TO_A_BYTE)Andm_lOnBits(BITS_TO_A_BYTE-1)
WordToHex=WordToHex&Right("0"&Hex(lByte),2)
Next
EndFunction

PublicFunctionMD5(sMessage,stype)
m_lOnBits(0)=CLng(1)
m_lOnBits(1)=CLng(3)
m_lOnBits(2)=CLng(7)
m_lOnBits(3)=CLng(15)
m_lOnBits(4)=CLng(31)
m_lOnBits(5)=CLng(63)
m_lOnBits(6)=CLng(127)
m_lOnBits(7)=CLng(255)
m_lOnBits(8)=CLng(511)
m_lOnBits(9)=CLng(1023)
m_lOnBits(10)=CLng(2047)
m_lOnBits(11)=CLng(4095)
m_lOnBits(12)=CLng(8191)
m_lOnBits(13)=CLng(16383)
m_lOnBits(14)=CLng(32767)
m_lOnBits(15)=CLng(65535)
m_lOnBits(16)=CLng(131071)
m_lOnBits(17)=CLng(262143)
m_lOnBits(18)=CLng(524287)
m_lOnBits(19)=CLng(1048575)
m_lOnBits(20)=CLng(2097151)
m_lOnBits(21)=CLng(4194303)
m_lOnBits(22)=CLng(8388607)
m_lOnBits(23)=CLng(16777215)
m_lOnBits(24)=CLng(33554431)
m_lOnBits(25)=CLng(67108863)
m_lOnBits(26)=CLng(134217727)
m_lOnBits(27)=CLng(268435455)
m_lOnBits(28)=CLng(536870911)
m_lOnBits(29)=CLng(1073741823)
m_lOnBits(30)=CLng(2147483647)

m_l2Power(0)=CLng(1)
m_l2Power(1)=CLng(2)
m_l2Power(2)=CLng(4)
m_l2Power(3)=CLng(8)
m_l2Power(4)=CLng(16)
m_l2Power(5)=CLng(32)
m_l2Power(6)=CLng(64)
m_l2Power(7)=CLng(128)
m_l2Power(8)=CLng(256)
m_l2Power(9)=CLng(512)
m_l2Power(10)=CLng(1024)
m_l2Power(11)=CLng(2048)
m_l2Power(12)=CLng(4096)
m_l2Power(13)=CLng(8192)
m_l2Power(14)=CLng(16384)
m_l2Power(15)=CLng(32768)
m_l2Power(16)=CLng(65536)
m_l2Power(17)=CLng(131072)
m_l2Power(18)=CLng(262144)
m_l2Power(19)=CLng(524288)
m_l2Power(20)=CLng(1048576)
m_l2Power(21)=CLng(2097152)
m_l2Power(22)=CLng(4194304)
m_l2Power(23)=CLng(8388608)
m_l2Power(24)=CLng(16777216)
m_l2Power(25)=CLng(33554432)
m_l2Power(26)=CLng(67108864)
m_l2Power(27)=CLng(134217728)
m_l2Power(28)=CLng(268435456)
m_l2Power(29)=CLng(536870912)
m_l2Power(30)=CLng(1073741824)


Dimx
Dimk
DimAA
DimBB
DimCC
DimDD
Dima
Dimb
Dimc
Dimd

ConstS11=7
ConstS12=12
ConstS13=17
ConstS14=22
ConstS21=5
ConstS22=9
ConstS23=14
ConstS24=20
ConstS31=4
ConstS32=11
ConstS33=16
ConstS34=23
ConstS41=6
ConstS42=10
ConstS43=15
ConstS44=21

x=ConvertToWordArray(sMessage)

a=&H67452301
b=&HEFCDAB89
c=&H98BADCFE
d=&H10325476

Fork=0ToUBound(x)Step16
AA=a
BB=b
CC=c
DD=d

md5_FFa,b,c,d,x(k+0),S11,&HD76AA478
md5_FFd,a,b,c,x(k+1),S12,&HE8C7B756
md5_FFc,d,a,b,x(k+2),S13,&H242070DB
md5_FFb,c,d,a,x(k+3),S14,&HC1BDCEEE
md5_FFa,b,c,d,x(k+4),S11,&HF57C0FAF
md5_FFd,a,b,c,x(k+5),S12,&H4787C62A
md5_FFc,d,a,b,x(k+6),S13,&HA8304613
md5_FFb,c,d,a,x(k+7),S14,&HFD469501
md5_FFa,b,c,d,x(k+8),S11,&H698098D8
md5_FFd,a,b,c,x(k+9),S12,&H8B44F7AF
md5_FFc,d,a,b,x(k+10),S13,&HFFFF5BB1
md5_FFb,c,d,a,x(k+11),S14,&H895CD7BE
md5_FFa,b,c,d,x(k+12),S11,&H6B901122
md5_FFd,a,b,c,x(k+13),S12,&HFD987193
md5_FFc,d,a,b,x(k+14),S13,&HA679438E
md5_FFb,c,d,a,x(k+15),S14,&H49B40821

md5_GGa,b,c,d,x(k+1),S21,&HF61E2562
md5_GGd,a,b,c,x(k+6),S22,&HC040B340
md5_GGc,d,a,b,x(k+11),S23,&H265E5A51
md5_GGb,c,d,a,x(k+0),S24,&HE9B6C7AA
md5_GGa,b,c,d,x(k+5),S21,&HD62F105D
md5_GGd,a,b,c,x(k+10),S22,&H2441453
md5_GGc,d,a,b,x(k+15),S23,&HD8A1E681
md5_GGb,c,d,a,x(k+4),S24,&HE7D3FBC8
md5_GGa,b,c,d,x(k+9),S21,&H21E1CDE6
md5_GGd,a,b,c,x(k+14),S22,&HC33707D6
md5_GGc,d,a,b,x(k+3),S23,&HF4D50D87
md5_GGb,c,d,a,x(k+8),S24,&H455A14ED
md5_GGa,b,c,d,x(k+13),S21,&HA9E3E905
md5_GGd,a,b,c,x(k+2),S22,&HFCEFA3F8
md5_GGc,d,a,b,x(k+7),S23,&H676F02D9
md5_GGb,c,d,a,x(k+12),S24,&H8D2A4C8A

md5_HHa,b,c,d,x(k+5),S31,&HFFFA3942
md5_HHd,a,b,c,x(k+8),S32,&H8771F681
md5_HHc,d,a,b,x(k+11),S33,&H6D9D6122
md5_HHb,c,d,a,x(k+14),S34,&HFDE5380C
md5_HHa,b,c,d,x(k+1),S31,&HA4BEEA44
md5_HHd,a,b,c,x(k+4),S32,&H4BDECFA9
md5_HHc,d,a,b,x(k+7),S33,&HF6BB4B60
md5_HHb,c,d,a,x(k+10),S34,&HBEBFBC70
md5_HHa,b,c,d,x(k+13),S31,&H289B7EC6
md5_HHd,a,b,c,x(k+0),S32,&HEAA127FA
md5_HHc,d,a,b,x(k+3),S33,&HD4EF3085
md5_HHb,c,d,a,x(k+6),S34,&H4881D05
md5_HHa,b,c,d,x(k+9),S31,&HD9D4D039
md5_HHd,a,b,c,x(k+12),S32,&HE6DB99E5
md5_HHc,d,a,b,x(k+15),S33,&H1FA27CF8
md5_HHb,c,d,a,x(k+2),S34,&HC4AC5665

md5_IIa,b,c,d,x(k+0),S41,&HF4292244
md5_IId,a,b,c,x(k+7),S42,&H432AFF97
md5_IIc,d,a,b,x(k+14),S43,&HAB9423A7
md5_IIb,c,d,a,x(k+5),S44,&HFC93A039
md5_IIa,b,c,d,x(k+12),S41,&H655B59C3
md5_IId,a,b,c,x(k+3),S42,&H8F0CCC92
md5_IIc,d,a,b,x(k+10),S43,&HFFEFF47D
md5_IIb,c,d,a,x(k+1),S44,&H85845DD1
md5_IIa,b,c,d,x(k+8),S41,&H6FA87E4F
md5_IId,a,b,c,x(k+15),S42,&HFE2CE6E0
md5_IIc,d,a,b,x(k+6),S43,&HA3014314
md5_IIb,c,d,a,x(k+13),S44,&H4E0811A1
md5_IIa,b,c,d,x(k+4),S41,&HF7537E82
md5_IId,a,b,c,x(k+11),S42,&HBD3AF235
md5_IIc,d,a,b,x(k+2),S43,&H2AD7D2BB
md5_IIb,c,d,a,x(k+9),S44,&HEB86D391

a=AddUnsigned(a,AA)
b=AddUnsigned(b,BB)
c=AddUnsigned(c,CC)
d=AddUnsigned(d,DD)
Next

Ifstype=32Then
MD5=LCase(WordToHex(a)&WordToHex(b)&WordToHex(c)&WordToHex(d))
Else
MD5=LCase(WordToHex(b)&WordToHex(c))
EndIf
EndFunction

'下面是測試代碼
Subtest()
MsgBoxMD5("a",16)'16位加密
MsgBoxMD5("a",32)'32位加密
EndSub

6. MD5加密演算法的解密源代碼(VB的)

MD5加密演算法: 見附件..

解密沒有的,MD5不支持解密,因為在加密的時候是隨機移位數的..

7. VB MD5加密解密的代碼

Dim md5 As New MD5CryptoServiceProvider
Dim username As Byte() = (New ASCIIEncoding).GetBytes(TextBox1.Text)

'轉換為哈希值Byte數組
Dim mdByte As Byte() = md5.ComputeHash(username)
'Dim mdString As String = System.BitConverter.ToString(mdByte)
Dim mdString As String = (New ASCIIEncoding).GetString(mdByte)
TextBox2.Text = mdString
md5理論上是不可破解的,要對照,只能再次加密後對照,網上也有些專門破解的網站,不過我想你要的不是那個吧

8. VB加密解密,急!!

<%
'----加密/解密 函數------
%>
<%
dim sBASE_64_CHARACTERS,varchar,varasc
dim len1
dim i
dim m3

sBASE_64_CHARACTERS = "+/"
sBASE_64_CHARACTERS = strUnicode2Ansi(sBASE_64_CHARACTERS)

Function strUnicodeLen(asContents)
'計算unicode字元串的Ansi編碼的長度
asContents1="a"&asContents
len1=len(asContents1)
k=0
for i=1 to len1
asc1=asc(mid(asContents1,i,1))
if asc1<0 then asc1=65536+asc1
if asc1>255 then
k=k+2
else
k=k+1
end if
next
strUnicodeLen=k-1
End Function

Function strUnicode2Ansi(asContents)
'將Unicode編碼的字元串,轉換成Ansi編碼的字元串
strUnicode2Ansi=""
len1=len(asContents)
for i=1 to len1
varchar=mid(asContents,i,1)
varasc=asc(varchar)
if varasc<0 then varasc=varasc+65536
if varasc>255 then
varHex=Hex(varasc)
varlow=left(varHex,2)
varhigh=right(varHex,2)
strUnicode2Ansi=strUnicode2Ansi & chrb("&H" & varlow ) & chrb("&H" & varhigh )
else
strUnicode2Ansi=strUnicode2Ansi & chrb(varasc)
end if
next
End function

Function strAnsi2Unicode(asContents)
'將Ansi編碼的字元串,轉換成Unicode編碼的字元串
strAnsi2Unicode = ""
len1=lenb(asContents)
if len1=0 then exit function
for i=1 to len1
varchar=midb(asContents,i,1)
varasc=ascb(varchar)
if varasc > 127 then
strAnsi2Unicode = strAnsi2Unicode & chr(ascw(midb(asContents,i+1,1) & varchar))
i=i+1
else
strAnsi2Unicode = strAnsi2Unicode & chr(varasc)
end if
next
End function

Function Base64encode(asContents)
'將Ansi編碼的字元串進行Base64編碼
'asContents應當是ANSI編碼的字元串(二進制的字元串也可以)
Dim lnPosition
Dim lsResult
Dim Char1
Dim Char2
Dim Char3
Dim Char4
Dim Byte1
Dim Byte2
Dim Byte3
Dim SaveBits1
Dim SaveBits2
Dim lsGroupBinary
Dim lsGroup64
Dim m4,len1,len2

len1=Lenb(asContents)
if len1<1 then
Base64encode=""
exit Function
end if

m3=Len1 Mod 3
If M3 > 0 Then asContents = asContents & String(3-M3, chrb(0))

IF m3 > 0 THEN
len1=len1+(3-m3)
len2=len1-3
else
len2=len1
end if

lsResult = ""

For lnPosition = 1 To len2 Step 3
lsGroup64 = ""
lsGroupBinary = Midb(asContents, lnPosition, 3)

Byte1 = Ascb(Midb(lsGroupBinary, 1, 1)): SaveBits1 = Byte1 And 3
Byte2 = Ascb(Midb(lsGroupBinary, 2, 1)): SaveBits2 = Byte2 And 15
Byte3 = Ascb(Midb(lsGroupBinary, 3, 1))

Char1 = Midb(sBASE_64_CHARACTERS, ((Byte1 And 252) \ 4) + 1, 1)
Char2 = Midb(sBASE_64_CHARACTERS, (((Byte2 And 240) \ 16) Or (SaveBits1 * 16) And &HFF) + 1, 1)
Char3 = Midb(sBASE_64_CHARACTERS, (((Byte3 And 192) \ 64) Or (SaveBits2 * 4) And &HFF) + 1, 1)
Char4 = Midb(sBASE_64_CHARACTERS, (Byte3 And 63) + 1, 1)
lsGroup64 = Char1 & Char2 & Char3 & Char4

lsResult = lsResult & lsGroup64
Next

if M3 > 0 then
lsGroup64 = ""
lsGroupBinary = Midb(asContents, len2+1, 3)

Byte1 = Ascb(Midb(lsGroupBinary, 1, 1)): SaveBits1 = Byte1 And 3
Byte2 = Ascb(Midb(lsGroupBinary, 2, 1)): SaveBits2 = Byte2 And 15
Byte3 = Ascb(Midb(lsGroupBinary, 3, 1))
Char1 = Midb(sBASE_64_CHARACTERS, ((Byte1 And 252) \ 4) + 1, 1)
Char2 = Midb(sBASE_64_CHARACTERS, (((Byte2 And 240) \ 16) Or (SaveBits1 * 16) And &HFF) + 1, 1)
Char3 = Midb(sBASE_64_CHARACTERS, (((Byte3 And 192) \ 64) Or (SaveBits2 * 4) And &HFF) + 1, 1)

if M3=1 then
lsGroup64 = Char1 & Char2 & ChrB(61) & ChrB(61)
else
lsGroup64 = Char1 & Char2 & Char3 & ChrB(61)
end if

lsResult = lsResult & lsGroup64
end if

Base64encode = lsResult
End Function

Function Base64decode(asContents)
'將Base64編碼字元串轉換成Ansi編碼的字元串
'asContents應當也是ANSI編碼的字元串(二進制的字元串也可以)
Dim lsResult
Dim lnPosition
Dim lsGroup64, lsGroupBinary
Dim Char1, Char2, Char3, Char4
Dim Byte1, Byte2, Byte3
Dim M4,len1,len2

len1= Lenb(asContents)
M4 = len1 Mod 4

if len1 < 1 or M4 > 0 then
Base64decode = ""
exit Function
end if

if midb(asContents, len1, 1) = chrb(61) then m4=3
if midb(asContents, len1-1, 1) = chrb(61) then m4=2

if m4 = 0 then
len2=len1
else
len2=len1-4
end if

For lnPosition = 1 To Len2 Step 4
lsGroupBinary = ""
lsGroup64 = Midb(asContents, lnPosition, 4)
Char1 = InStrb(sBASE_64_CHARACTERS, Midb(lsGroup64, 1, 1)) - 1
Char2 = InStrb(sBASE_64_CHARACTERS, Midb(lsGroup64, 2, 1)) - 1
Char3 = InStrb(sBASE_64_CHARACTERS, Midb(lsGroup64, 3, 1)) - 1
Char4 = InStrb(sBASE_64_CHARACTERS, Midb(lsGroup64, 4, 1)) - 1
Byte1 = Chrb(((Char2 And 48) \ 16) Or (Char1 * 4) And &HFF)
Byte2 = lsGroupBinary & Chrb(((Char3 And 60) \ 4) Or (Char2 * 16) And &HFF)
Byte3 = Chrb((((Char3 And 3) * 64) And &HFF) Or (Char4 And 63))
lsGroupBinary = Byte1 & Byte2 & Byte3

lsResult = lsResult & lsGroupBinary
Next

'處理最後剩餘的幾個字元
if M4 > 0 then
lsGroupBinary = ""
lsGroup64 = Midb(asContents, len2+1, m4) & chrB(65) 'chr(65)=A,轉換成值為0
if M4=2 then '補足4位,是為了便於計算
lsGroup64 = lsGroup64 & chrB(65)
end if
Char1 = InStrb(sBASE_64_CHARACTERS, Midb(lsGroup64, 1, 1)) - 1
Char2 = InStrb(sBASE_64_CHARACTERS, Midb(lsGroup64, 2, 1)) - 1
Char3 = InStrb(sBASE_64_CHARACTERS, Midb(lsGroup64, 3, 1)) - 1
Char4 = InStrb(sBASE_64_CHARACTERS, Midb(lsGroup64, 4, 1)) - 1
Byte1 = Chrb(((Char2 And 48) \ 16) Or (Char1 * 4) And &HFF)
Byte2 = lsGroupBinary & Chrb(((Char3 And 60) \ 4) Or (Char2 * 16) And &HFF)
Byte3 = Chrb((((Char3 And 3) * 64) And &HFF) Or (Char4 And 63))

if M4=2 then
lsGroupBinary = Byte1
elseif M4=3 then
lsGroupBinary = Byte1 & Byte2
end if

lsResult = lsResult & lsGroupBinary
end if

Base64decode = lsResult
End Function

'------------------------------------------------------------------

Function Base64EncodeStr(tpStr)
Base64EncodeStr=strAnsi2Unicode(Base64encode(strUnicode2Ansi(tpStr)))
End Function

Function Base64DecodeStr(tpStr)
Base64DecodeStr=strAnsi2Unicode(Base64decode(strUnicode2Ansi(tpStr)))
End Function
%>
<%
'可用於加密一串地址,多個字元串
A_Key=split("96,44,63,80",",") '定義密鑰

'*********加密的過程*********
Function EnCrypt(m)
Dim strChar,iKeyChar,iStringChar,I
k=0
for I = 1 to Len(m)
iKeyChar =Cint(A_Key(k))
iStringChar = Asc(mid(m,I,1)) '獲取字元的ASCII碼值
iCryptChar = iKeyChar Xor iStringChar '進行異或運算
'對密鑰進行移位運算
If k<3 Then
k=k+1
Else
k=0
End If
c = c & Chr(iCryptChar)
next
EnCrypt = c
End Function

'*********解密的過程*********
Function DeCrypt(c)
Dim strChar, iKeyChar, iStringChar, I
k=0
for I = 1 to Len(c)
iKeyChar =Cint(A_Key(k))
iStringChar = Asc(mid(c,I,1))
iDeCryptChar = iKeyChar Xor iStringChar '進行異或運算
'對密鑰進行移位運算
If k<3 Then
k=k+1
Else
k=0
End If
strDecrypted = strDecrypted & Chr(iDeCryptChar)
next
DeCrypt = strDecrypted
End Function
'中文 可以!但要將所有 Asc() 函數換成 AscW() 函數, Chr() 函數換成 ChrW() 函數!
%>
<%
'-----------------------------------------------------------------
'簡單加密解密
'加密:
'適用於任何字元,包括空格和url沖突的"&""?""%"漢字等符號
'簡單加密,可以改造成移位加密,比如每個字元asc碼值增加或減少一個數字
'可以改造成移位隨機加密。
'比如每個字元前有一個隨機數字,表示該字元asc碼值增加或減少這個隨機數字
'-----------------------------------------------------------------
Function Smp_Encode(x) '加密
for i=1 to len(x)
TempNum=hex(asc(mid(x,i,1)))
if len(TempNum)=4 then
Smp_Encode=Smp_Encode & cstr(TempNum)
else
Smp_Encode=Smp_Encode & "00" & cstr(TempNum)
end if
next
End Function

Function Smp_Decode(x) '解密
for i=1 to len(x) step 4
Smp_Decode=Smp_Decode & chr(int("&H" & mid(x,i,4)))
next
End Function
%>
<%
Function S_Encode(str) '加密字元串
'str = EnCrypt(str)
'str = Base64EncodeStr(str)
str = Smp_Encode(str)
S_Encode = str
End Function

Function S_Decode(str) '解密字元串
'str = DeCrypt(str)
'str = Base64DecodeStr(str)
str = Smp_Decode(str)
S_Decode = str
End Function
%>
<%
Dim theFStr,theEStr,theLStr,IfReal
theFStr = "#$%&'()*+,.-_/:;<=>?@[\\]^`{|}~%中文" '原始字元串
theEStr = Str_Encode(theFStr) '加密字元串
theLStr = Str_Decode(theEStr) '還原字元串
If theFStr=theLStr Then
IfReal = True
Else
IfReal = False
End If

Response.Write "加密前為:"& theFStr &"<BR>"&VbCrlf
Response.Write "加密前字元長度:"& Len(theFStr) &"<BR><BR>"
Response.Write "加密後為:"& theEStr &"<BR>"&VbCrlf
Response.Write "加密後的字元長度:"& Len(theEStr) &"<BR><BR>"
Response.Write "解密(還原)後為:" & theLStr &"<BR>"&VbCrlf
Response.Write "前後字元是否相等:" & IfReal &"<BR>"&VbCrlf
%>

9. VB文本加密解密

剛好以前寫過一篇文章,提取了一部分
對敏感的數據進行加密是必要的,如用戶的密碼的加密。在要對數據進行加密前得確定要用何種加密方式,加密分類有很多種,從可逆角度可分為可逆和不可逆,從加密演算法可分為秘密密鑰演算法、公開密鑰演算法(用於加密、數據簽名和密鑰管理)以及單向散列函數等。md5加密是不可逆的,md5加密的具體實現又分為許多種。

加密為什麼要採用不可逆?舉個例子,當你輸入的密碼進行加密的密文被截取,那他也要把密文解密成原文,這時由於不可逆,那他要破解密碼的難度就提高,除非他可以越過加密那一步直接提供密文,這樣就達到安全的目的。每當我們忘記密碼進行找回密碼,大多數網站要求我們輸入新的密碼而不是直接告訴我們原來的密碼,這是由於不可逆造成的,但這又不是壞處,為什麼這么說?如果在找回密碼時能夠知道原來的密碼,那麼卧底就不用修改密碼來監控所有人,而所有人又不知情。但並不是所有網站都採用不可逆的演算法,筆者在某網站注冊過用戶,有一段沒登錄過,那網站就會給筆者一份提醒郵件,而這提醒郵件又顯示著筆者的密碼,這很可能是這個網站採用的不是不可逆的演算法。

今天為一個網友實現了一個簡易的自定義加密方式,使用的是Visual Basic 6.0。關鍵代碼如下:

Dim decode As String, encode As String, oldString As String, newString As String

Dim i As Integer

decode = "1234567890" '加密原文對照字元,不應該出錯相同的字元

encode = "eoSDriKjsd" '加密成密文的對照字元,字元個數不能少於decode,否則極易造成出錯

oldString = "87232" '待加密的字元串,所有字元都必需能夠在decode里找到對應位置

newString = "" '存放加密後的字元串

For i = 1 To Len(oldString)

newString = newString + Mid$(encode, Instr(decode, Mid$(oldString, i, 1)), 1)

Next i

Print "原文:"; oldString

Print "密文:"; newString

decode和encode的值可以根據需要設置,oldString可以由文框輸入,如果encode里的字元倆倆不相同,那麼只需調換decode和encode的值,就可以實現解密,否則加密後的密文為不可逆。

當然,在實際的應用種應增加加密的演算法復雜度,讓密文不至於被人輕而易舉破解。更多的加密知識請參考相關文檔。

希望回答對你有幫助

10. VB中md5命令函數是什麼

下面是完整的類,可以設置任意密碼
'DES及md5加密解密----添加引用中添加對system.web的引用。
Imports System.Security.Cryptography
Imports System
Imports System.Text
Imports System.Web
''' <summary>
''' DES加密類
''' </summary>
''' <remarks></remarks>
Public Class DESEncrypt
Public Sub DESEncrypt()
End Sub
Public Shared Function Encrypt(ByVal Text As String) As String
Return Encrypt(Text, "12345678")
End Function
Public Shared Function Encrypt(ByVal Text As String, ByVal sKey As String) As String
Dim des As New DESCryptoServiceProvider()
Dim inputByteArray As Byte()
inputByteArray = Encoding.Default.GetBytes(Text)
des.Key = ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.(sKey, "md5").Substring(0, 8))
des.IV = ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.(sKey, "md5").Substring(0, 8))
Dim ms As New System.IO.MemoryStream()
Dim cs As New CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write)
cs.Write(inputByteArray, 0, inputByteArray.Length)
cs.FlushFinalBlock()
Dim ret As New StringBuilder()
Dim b As Byte
For Each b In ms.ToArray()
ret.AppendFormat("{0:X2}", b)
Next
Return ret.ToString()
End Function
Public Shared Function Decrypt(ByVal Text As String) As String
Return Decrypt(Text, "12345678")
End Function
Public Shared Function Decrypt(ByVal Text As String, ByVal sKey As String) As String
Dim des As New DESCryptoServiceProvider()
Dim len As Integer
len = Text.Length / 2
Dim inputByteArray(len - 1) As Byte
Dim x, i As Integer
For x = 0 To len - 1
i = Convert.ToInt32(Text.Substring(x * 2, 2), 16)
inputByteArray(x) = CType(i, Byte)
Next
des.Key = ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.(sKey, "md5").Substring(0, 8))
des.IV = ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.(sKey, "md5").Substring(0, 8))
Dim ms As New System.IO.MemoryStream()
Dim cs As New CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write)
cs.Write(inputByteArray, 0, inputByteArray.Length)
cs.FlushFinalBlock()
Return Encoding.Default.GetString(ms.ToArray())
End Function
End Class
'以下是調用方法
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click '加密
Dim str_Encrypt As String = DESEncrypt.Encrypt("你要加密的文本,可以是任意長度", "密碼,可以很長,如果省略這個參數就是默認的12345678")
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click '解密
Dim str_Decrypt As String = DESEncrypt.Decrypt("你要解密的文本, 可以是任意長度", "加密時用到的密碼,如果省略這個參數就是默認的12345678")
End Sub

熱點內容
塑料解壓 發布:2024-05-20 03:50:09 瀏覽:75
python在伺服器端開發 發布:2024-05-20 03:31:17 瀏覽:66
編程大冒險 發布:2024-05-20 03:19:27 瀏覽:637
阿瓦隆九個人怎麼配置 發布:2024-05-20 02:57:47 瀏覽:758
sqlnotinexcept 發布:2024-05-20 02:53:10 瀏覽:342
激光切割編程教程難嗎 發布:2024-05-20 02:49:57 瀏覽:926
sqlbool 發布:2024-05-20 02:49:57 瀏覽:722
如何把文件壓縮到最小 發布:2024-05-20 02:25:03 瀏覽:452
javash腳本文件 發布:2024-05-20 01:43:11 瀏覽:830
安卓手機如何登陸刺激戰場國際服 發布:2024-05-20 01:29:02 瀏覽:861