2017-02-20 43 views
0

У меня есть веб-приложение с Spring Security и Grails. База данных, которую я использую, - MySql. Я хотел изменить структуру для использования .Net и C#, но использовать одну и ту же базу данных. Пароли, созданные весной безопасности, зашифрованы. Мне нужен способ проверки имени пользователя и пароля с использованием той же базы данных.Декодирование Пароли хранят мою весну в Интернете в .NET C# Web Application

Есть ли способ сделать это?

EDIT:

Я прочитал пару постов на SHA дешифрования. Есть ли другой способ справиться с этим?

+0

Надеемся, что пароли * хэшируются * и не * зашифрованы *. Разница, являющаяся первой, не является обратимой, что является важным отличием. Разумеется, вы наверняка реализуете тот же алгоритм на .NET, но для этого потребуется ручная работа. –

+0

Да, я провел некоторое исследование, и, похоже, это единственный способ. Я опубликую свои выводы. – Adds

ответ

1

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

https://github.com/grails-plugins/grails-spring-security-core/blob/7f09c528bedcf53ff9d109dad725d68a54d36a2e/src/docs/passwords/salt.adoc

SystemWideSaltSource и пользовательских SaltSource

Spring Security предоставляет простую реализацию SaltSource, `{apidocs} org/springframework/security/authentication/dao/SystemWideSaltSource.html [SystemWideSaltSource], которая использует одну соль для каждого пользователя. Он менее надежный, чем использование другого значения для каждого пользователя, но все же лучше, чем отсутствие соли.

Пример переопределение источника соли боба с помощью SystemWideSaltSource будет выглядеть следующим образом:

Листинг 1. Настройка SystemWideSaltSource как SaltSource боба в application.groovy

import org.springframework.security.authentication.dao.SystemWideSaltSource 

beans = { 
    saltSource(SystemWideSaltSource) { 
     systemWideSalt = 'the_salt_value' 
    } 
} 

Чтобы иметь полный контроль над процессом , вы можете реализовать интерфейс SaltSource и заменить реализацию плагина на свой собственный, определив компонент в grails-app/conf/spring/resources.groovy с именем saltSource:

Листинг 2. Co nfiguring пользовательский реализации SaltSource боба в application.groovy

import com.foo.bar.MySaltSource 

beans = { 
    saltSource(MySaltSource) { 
     // set properties 
    } 
} 

Также смотрите здесь, чтобы понять, возможно, принять плагин в отладке, чтобы выяснить, как это работает:

https://github.com/grails-plugins/grails-spring-security-core/tree/7f09c528bedcf53ff9d109dad725d68a54d36a2e/src/main/groovy/grails/plugin/springsecurity/authentication/encoding

You необходимо протестировать тест алгоритма соли на двух системах, которые используют один и тот же ключ солярии - вы должны найти в обеих системах, которые затем будут шифровать/дешифровать таким же образом. (так как они оба имеют один и тот же ключ двери)

Как бы то ни было, у вас уже есть защита от задержек с пружиной в определенном виде (о том, что у вас нет обзора), и теперь уже слишком поздно, поскольку им все будет нужно быть заново зашифрованным

Это, если вы проверили ту же соль на две системы и, самое главное, имели 1 тестовую систему, сконфигурированную с использованием пружины, используя эту соль, и проверили результат на вашем.Net C# system сначала

Также я пронесся через него и заметил что-то о том, что шифрование по умолчанию связано с именем пользователя - так что вы можете дать понять, как вы могли бы написать что-то подобное для другого конца (выяснение того, что он использовал для своего по умолчанию)

+0

Я попробую это и посмотрю, поможет ли это. – Adds

1

Вы не можете этого сделать - это точка хранения хэшей в БД. Однако вы всегда можете вычислить хеш самостоятельно и сравнить его со значением, хранящимся в вашей базе данных.

+0

Вы знаете, как можно вычислить хеш? Я прочитал пару сообщений о расшифровке SHA (если это то, на что вы указываете). Есть ли другой способ справиться с этим? – Adds

+0

@Adds unsure, если @dawid говорит о правильной вещи, когда говорит «сравнение хеша», вы можете сравнить хэш набора значений. Весь смысл шифрования пароля состоит в том, чтобы свести к минимуму все попытки любого взлома расшифровать эту информацию. Шифрование основано на ключах, и, короче, вам нужно будет убедиться, что один и тот же идентичный процесс расшифровки шифрования существует с обеих сторон http://www.thespringriver.com/simple-example-of-java-encryption-decryption/. https://www.mkyong.com/spring-security/spring-security-password-hashing-example/ – Vahid

+0

Я не имел в виду расшифровку, я имел в виду шифрование. Когда пользователь вводит пароль, вы вычисляете хеш SHA1/MD5 (или все, что вы использовали весной), и сравниваете его с хешем, который уже хранится в вашей базе данных. Криптографическая хеш-функция является однонаправленной по определению - нет возможности ее вернуть (вы можете только угадать пароль на основе хэширования, если у вас есть огромная база данных сопоставлений паролей-хэшей). – Dawid

 Смежные вопросы

  • Нет связанных вопросов^_^