Здравствуйте! Сегодня: Чт, 20 Июн 2019, Ваш IP: 18.215.161.19 Войти через loginza
 
Вход | Регистрация | Забыли пароль?
Мой Kbyte.Ru
> Список форумов Kbyte.Ru - - Общие вопросы программирования
+ Создать новую тему Страница: 1
Тема: Шифрование · +  +  дата добавления: 23.08.2014 / 19:18
Автор темы:
JustArt
JustArt
тем: 95 / ответов: 675 / благодарностей: 3 / репутация: 35
Url: crash.kbyte.ru
Skype: ghostman12.12.2012
ответов: 675
создал(а) тем: 95


Почему в обработчике ashx код работает корректно
Imports System.Web
Imports System.Web.Services
Imports System.IO
Imports System.Data.SqlClient
Imports System.Security
Imports System.Security.Cryptography
    Public Function EncryptString(ByVal Password As String, ByVal inString As String) As String
        Try
            Dim symAlg As New AesCryptoServiceProvider()
            symAlg.IV = UnicodeEncoding.Unicode.GetBytes(Mid(Password, 1, 8)) 'вектор
            symAlg.Key = UnicodeEncoding.Unicode.GetBytes(Mid(Password, 9, 16)) 'Ключ
            Dim inBlock() As Byte = UnicodeEncoding.Unicode.GetBytes(inString)
            Dim xfrm As ICryptoTransform = symAlg.CreateEncryptor()
            Dim outBlock() As Byte = xfrm.TransformFinalBlock(inBlock, 0, inBlock.Length)
            Return Convert.ToBase64String(outBlock)
        Catch ex As Exception
            'Raport("CoreCrypt|EncryptString|" + ex.Message)
            Return "ERR_" + ex.Message
        End Try
    End Function
а в обычном классе тот же самый код, но тут пишет что ошибка
AesCryptoServiceProvider
Просит заменить на другие варианты
Технологии: .NET Framework, Visual Basic .NET
--
Du Main Du BA DU
 
Ответ # 1 # · +  +  дата добавления: 24.08.2014 / 12:27
Автор ответа:
Алексей Немиро
Алексей Немиро
тем: 534 / ответов: 5130 / благодарностей: 325 / репутация: 211
Чашка Kbyte.Ru>>
Url: aleksey.nemiro.ru
Icq: 261779681
Skype: alekseynemiro
ответов: 5130
создал(а) тем: 534


а в обычном классе тот же самый код,
С теме же самыми входящими параметрами?

Ошибка в чем-то другом.
Может ключ неверный. Размер ключа не может быть каким попало.
У тебя странный код формирования ключей :) Функция Mid из древнего Basic, вместо нее лучше использовать Substring.
 
Ответ # 2 # · +  +  дата добавления: 24.08.2014 / 15:42
Автор ответа:
JustArt
JustArt
тем: 95 / ответов: 675 / благодарностей: 3 / репутация: 35
Url: crash.kbyte.ru
Skype: ghostman12.12.2012
ответов: 675
создал(а) тем: 95


Код не мой
Я не сам ни разу в жизни не писал функции шифровки и дешифровки
--
Du Main Du BA DU
 
Ответ # 3 # · +  +  дата добавления: 24.08.2014 / 16:12
Автор ответа:
Алексей Немиро
Алексей Немиро
тем: 534 / ответов: 5130 / благодарностей: 325 / репутация: 211
Чашка Kbyte.Ru>>
Url: aleksey.nemiro.ru
Icq: 261779681
Skype: alekseynemiro
ответов: 5130
создал(а) тем: 534


В данном случае ты используешь готовые методы шифрования (.net), так что это обычный код, который ничем не отличается от другого кода, с которым ты работаешь ежедневно :)

Размер значения в переменной Password в данном коде должен быть не меньше 16 символов.
 
Ответ # 4 # · +  +  дата добавления: 24.08.2014 / 17:29
Автор ответа:
JustArt
JustArt
тем: 95 / ответов: 675 / благодарностей: 3 / репутация: 35
Url: crash.kbyte.ru
Skype: ghostman12.12.2012
ответов: 675
создал(а) тем: 95


Размер значения в переменной Password в данном коде должен быть не меньше 16 символов.
автор кода писал что должно быть не больше не меньше 24 символов
--
Du Main Du BA DU
 
Ответ # 5 # · +  +  дата добавления: 24.08.2014 / 17:38
Автор ответа:
Алексей Немиро
Алексей Немиро
тем: 534 / ответов: 5130 / благодарностей: 325 / репутация: 211
Чашка Kbyte.Ru>>
Url: aleksey.nemiro.ru
Icq: 261779681
Skype: alekseynemiro
ответов: 5130
создал(а) тем: 534


Mid(Password, 1, 8)
считать из строки Password с первого по восьмой символ
Mid(Password, 9, 16)
с девятого по шестнадцатый.
 
Ответ # 6 # · +  +  дата добавления: 24.08.2014 / 23:31
Автор ответа:
JustArt
JustArt
тем: 95 / ответов: 675 / благодарностей: 3 / репутация: 35
Url: crash.kbyte.ru
Skype: ghostman12.12.2012
ответов: 675
создал(а) тем: 95


Мы не много отошли от проблемы в вопросе, мне не понятно почему у меня выдает ошибку при инициализации?
Dim symAlg As New AesCryptoServiceProvider()
Пишет что такого нет
AesCryptoServiceProvider()
--
Du Main Du BA DU
 
Ответ # 7 # · +  +  дата добавления: 24.08.2014 / 23:46
Автор ответа:
Алексей Немиро
Алексей Немиро
тем: 534 / ответов: 5130 / благодарностей: 325 / репутация: 211
Чашка Kbyte.Ru>>
Url: aleksey.nemiro.ru
Icq: 261779681
Skype: alekseynemiro
ответов: 5130
создал(а) тем: 534


У меня все работает.
Imports System.Web
Imports System.Web.Services
Imports System.Security.Cryptography

Public Class Handler1
  Implements System.Web.IHttpHandler

  Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest

    context.Response.ContentType = "text/plain"
    context.Response.Write(EncryptString("testdfdfgret543453tegertgertwert", "123"))

  End Sub

  ReadOnly Property IsReusable() As Boolean Implements IHttpHandler.IsReusable
    Get
      Return False
    End Get
  End Property

  Public Function EncryptString(ByVal Password As String, ByVal inString As String) As String
    Try
      Dim symAlg As New AesCryptoServiceProvider()
      symAlg.IV = UnicodeEncoding.Unicode.GetBytes(Mid(Password, 1, 8)) 'вектор
      symAlg.Key = UnicodeEncoding.Unicode.GetBytes(Mid(Password, 9, 16)) 'Ключ
      Dim inBlock() As Byte = UnicodeEncoding.Unicode.GetBytes(inString)
      Dim xfrm As ICryptoTransform = symAlg.CreateEncryptor()
      Dim outBlock() As Byte = xfrm.TransformFinalBlock(inBlock, 0, inBlock.Length)
      Return Convert.ToBase64String(outBlock)
    Catch ex As Exception
      'Raport("CoreCrypt|EncryptString|" + ex.Message)
      Return "ERR_" + ex.Message
    End Try
  End Function

End Class
Если у тебя не работает, то выдели в отдельный проект и выложи на форум, проверю.
 
Ответ # 8 # · +  +  дата добавления: 25.08.2014 / 00:33
Автор ответа:
Алексей Немиро
Алексей Немиро
тем: 534 / ответов: 5130 / благодарностей: 325 / репутация: 211
Чашка Kbyte.Ru>>
Url: aleksey.nemiro.ru
Icq: 261779681
Skype: alekseynemiro
ответов: 5130
создал(а) тем: 534


Ошибка не в коде. Попробуй очистить (меню Проект -> Очистить решение) и перекомпилировать проект.
Проверь другие ошибки, дело может быть в них.
Проверь версию .Net Framework (ищи в свойствах проекта).
 
Ответ # 9 # · +  +  дата добавления: 25.08.2014 / 01:47
Автор ответа:
JustArt
JustArt
тем: 95 / ответов: 675 / благодарностей: 3 / репутация: 35
Url: crash.kbyte.ru
Skype: ghostman12.12.2012
ответов: 675
создал(а) тем: 95


Да, вы правы, этот, вроде как класс, доступен только в 4 framework'е :)
--
Du Main Du BA DU
 
Ответ # 10 # · +  +  дата добавления: 25.08.2014 / 09:35
Автор ответа:
Алексей Немиро
Алексей Немиро
тем: 534 / ответов: 5130 / благодарностей: 325 / репутация: 211
Чашка Kbyte.Ru>>
Url: aleksey.nemiro.ru
Icq: 261779681
Skype: alekseynemiro
ответов: 5130
создал(а) тем: 534


Если верить MSDN, то с .NET Framework 3.5 должен быть доступен.



 
Страница: 1 + Создать новую тему