Ключевой элемент этой схемы - необратимое шифрование. Одним из самых популярных алгоритмов тут является SHA-1.
Итак, задача прежняя: на серверной стороне java. Код тут такой:
- /**
- * Хэширование sha1
- * @param Param строка для хеширования
- * @param Encode
- * @return hex-представление хэш-строки
- * @throws NoSuchAlgorithmException
- * @throws UnsupportedEncodingException
- */
- public static String sha1(String Param) throws NoSuchAlgorithmException, UnsupportedEncodingException {
- MessageDigest SHA = MessageDigest.getInstance("SHA-1");
- SHA.reset();
- SHA.update(Param.getBytes("UTF-8"), 0, Param.length());
- byte[] sha1hash = SHA.digest();
- return bytesToHexStr(sha1hash);
- }
Тут полученный хэш мы сразу представляем в виде hex-строки. Для этого используем метод:- /**
- * Преобразование байтового массива в hex-строку
- * @param raw
- * @return String
- */
- public static String bytesToHexStr(byte[] raw) {
- char[] kDigits = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
- int length = raw.length;
- char[] hex = new char[length * 2];
- for (int i = 0; i < length; i++) {
- int value = (raw[i] + 256) % 256;
- int highIndex = value >> 4;
- int lowIndex = value & 0x0f;
- hex[i * 2 + 0] = kDigits[highIndex];
- hex[i * 2 + 1] = kDigits[lowIndex];
- }
- return new String(hex);
- }
Теперь аналогичное действие делаем во flex:
- var h:IHash = Crypto.getHash("sha1");
- var sidn:String = Hex.fromArray(h.hash(Hex.toArray(Hex.fromString("your_secret_string"))));
Тут, как видите, всё совсем просто. Конечно, если использовать правильные библиотеки :)Я, как и в предыдущих случаях использовал библиотеку as3crypto
Комментариев нет:
Отправить комментарий