Вопрос
Мне нужно зашифровать строку и сохранить ее в базе, потом через определенное время расшифровать. Как это сделать? В самой виндовс есть какие-то библиотеки , но ничего поэтому поводу толкового непонял.
Ответ
CryptoAPI. Если в .NET, то смотри на System.Security.Criptography.
Павел Сурменок
Самое лучшше, это CriptoApi, но можно замуть и через SSPI, правда последний ориентирован на защищенную передачу и обращается к первому.
Если нужно что то разовое и не взломоустойчивое, то можно воспользоватся Cipher и еще в какую нибуть кодировку это загнать, типа BASE64, что догадатся труднее было, но такое решение имеет низкую взломоустойчивость.
Ivan Rozhuk
Public Function dhXORText(strText As String, strPWD As String) As String
Dim abytText() As Byte
Dim abytPWD() As Byte
Dim intPWDPos As Integer
Dim intPWDLen As Integer
Dim intChar As Integer
abytText = strText
abytPWD = strPWD
intPWDLen = LenB(strPWD)
For intChar = 0 To LenB(strText) — 1
' Get the next number between 0 and intPWDLen — 1
intPWDPos = (intChar Mod intPWDLen)
abytText(intChar) = abytText(intChar) Xor _
abytPWD(intPWDPos)
Next intChar
dhXORText = abytText
End Function
Самый простой, но не лучший пример шифрования, но «не посвященные» вряд ли смогут взломать файл зашифрованный такими способом.
Krueger
Public Function EnCrypt(Text As String, password As String) As String
Сам алгоритм элементарный — складываем код символа текста с кодом символа пароля, если получилось >255, то отнимаем 255. Расшифровка происходит в обратном порядке.
Dim l As Long
Dim lngPassPos As Long
Dim lngPassLen As Long
Dim intCode As Integer
Dim strtemp As String
If Len(Text) = 0 Or Len(password) = 0 Then
EnCrypt = Text
Exit Function
End If
lngPassLen = Len(password)
lngPassPos = 1
For l = 1 To Len(Text)
intCode = Asc(Mid(Text, l, 1)) + Asc(Mid(password, lngPassPos, 1))
If intCode > 255 Then intCode = intCode — 255
strtemp = strtemp & Chr(intCode)
lngPassPos = lngPassPos + 1
If lngPassPos > lngPassLen Then lngPassPos = 1
Next l
EnCrypt = strtemp
End Function
Public Function DeCrypt(Text As String, password As String) As String
Dim l As Long
Dim lngPassPos As Long
Dim lngPassLen As Long
Dim intCode As Integer
Dim strtemp As String
If Len(Text) = 0 Or Len(password) = 0 Then
DeCrypt = Text
Exit Function
End If
lngPassLen = Len(password)
lngPassPos = 1
For l = 1 To Len(Text)
intCode = Asc(Mid(Text, l, 1)) — Asc(Mid(password, lngPassPos, 1))
If intCode < 1 Then intCode = intCode + 255
strtemp = strtemp & Chr(intCode)
lngPassPos = lngPassPos + 1
If lngPassPos > lngPassLen Then lngPassPos = 1
Next l
DeCrypt = strtemp
End Function
Public Function LoadTextFile(Path As String) As String
Dim strFile As String
Open Path For Binary As #1
strFile = Space$(LOF(1))
Get 1, , strFile
Close #1
LoadTextFile = strFile
End Function
Public Function SaveTextFile(Path As String, Text As String)
Open Path For Output As #1
Print #1, Text
Close #1
End Function
Артем Кривокрисенко
Copyright 2000-2004 Сообщество Чайников
Контактная информация