Рейтинг:
26
Pablo Aliskevicius
Вы отправляете строку для DecryptByPassPhrase, но функция ожидает параметр varbinary.
declare @encrypt varbinary(200)
select @encrypt = EncryptByPassPhrase('key', 'abc' )
select @encrypt
select convert(varchar(100),DecryptByPassPhrase('key', @encrypt ))
Результаты таковы:
---------------------------------------------------------------------------
0x010000009912C2B009EEAC5B7F2A9020D433D3EAFA026004ADD5AAB4
(1 row(s) affected)
---------------------------------------------------------------------------
abc
(1 row(s) affected)
Надеюсь, это поможет,
Пабло.
Mukund Thakker
declare @encrypt varbinary(200)
выберите @encrypt = EncryptByPassPhrase('key', 'abc' )
выберите @шифрования
Если вы шифруете с помощью следующего скрипта, он каждый раз выдает разные выходные данные. если я применяю то же самое это дает нулевой результат
Pablo Aliskevicius
Каждый раз ожидается разный выход. Некоторые алгоритмы шифрования вводят случайный шум в зашифрованную строку; это затрудняет их взлом. Вся проблема шифрования, с такими понятиями, как "доказательство" и "Энтропия" (которые имеют в контексте шифрования другие значения, чем их обычные), заполнила десятки книг.
Mukund Thakker
ЭТО НЕ БЫЛО ПРИНЯТО.
Pablo Aliskevicius
А почему бы и нет?
Rakesh N Bhavsar
Я согласен с Мукундом Таккером.
- Когда мы запускаем обе функции в одном запросе, это работает нормально. Но когда мы запускаем его с помощью отдельных sql-скриптов, он не будет работать."
Сценарий выглядит следующим образом:
Я создал две разные хранимые процедуры, каждая из которых предназначена для EncryptByPassPhrase('key', 'abc'), а другая-для convert(varchar(100), DecryptByPassPhrase('key', @encrypt))
Я сохраняю результат процедуры 1 в базе данных.
Процедура 2 будет повторно использовать сохраненное зашифрованное значение varbinary и выполнять дешифровку, возвращая значение 'NULL'.
Честно говоря, я не могу точно использовать функцию sql 'DecryptByPassPhrase ()'.
Рейтинг:
0
7045Jeegnesh
If Help...
For decrypt
-----------------------
DECLARE @pwd varchar(100),@OriginalPwd as varchar(100),@OriginalString as Varchar(100),@Count as int,@iLoop as int,@temp as int,@rightChar as int
Set @pwd =@Password
set @Count =LEN (@pwd)
set @iLoop = 1
Set @rightChar = 1
set @OriginalString = ''
set @OriginalPwd=''
set @temp = 1
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
--SET NOCOUNT ON;
SELECT @OriginalString= REVERSE(@pwd)
WHILE @temp<=@Count <pre lang="SQL">
begin
SELECT @OriginalPwd = @OriginalPwd + Char(ascii(RIGHT(LEFT(@OriginalString,@rightChar),1))-@iLoop)
if @iLoop=4
begin
set @iLoop=0
end
set @iLoop=@iLoop+1
set @rightChar=@rightChar+1
set @temp=@temp+1
END
select password=@OriginalPwd
PRINT 'Original String Is :- ' +@OriginalPwd
И я уверен, что вы можете управлять им для шифрования....
Richard Deeming
Это решенный вопрос более чем трехлетней давности. Ваш ответ ничего не добавляет к принятому решению.
Рейтинг:
0
Shanisara
--Шифр
Создать функцию FNC_ENCRIPTION_PW(@str nvarchar(4000))
Возвращает varbinary(8000)
АС
НАЧАТЬ
Объявить @encript varbinary(8000)
SET @encript = ENCRYPTBYPASSPHRASE('KEY',@str)
RETURN (@encript)
КОНЕЦ
ГО
--Расшифровка
Создать функцию FNC_DECRIPTION_PW(@Encrypt varbinary(8000))
Возвращает nvarchar(4000)
АС
НАЧАТЬ
Объявить @decript varbinary(4000)
SET @decript = DECRYPTBYPASSPHRASE('KEY',@Encrypt)
RETURN (@decript)
КОНЕЦ
ГО
--КАК ИСПОЛЬЗОВАТЬ
Объявить @decript nvarchar(4000)
Объявить @encript varbinary(8000)
SET @encript = [dbo].[FNC_ENCRIPTION_PW]('пароль')
Выберите @encript
SET @decript = [dbo].[FNC_DECRIPTION_PW](@encript)
Выберите @decript
Richard Deeming
Это решенный вопрос более чем трехлетней давности. Ваш ответ ничего не добавляет к принятому решению.