JavaScript의 문자열에서 해시를 만드는 방법은 무엇입니까?

WBOY
풀어 주다: 2023-08-25 15:49:04
앞으로
1368명이 탐색했습니다.

如何在 JavaScript 中从字符串创建哈希?

시작하기 전에 JavaScript의 해싱을 이해해 봅시다. 해시 값도 문자열이지만 특정 알고리즘을 사용하여 암호화됩니다. 일반적으로 보안 목적으로 해시를 사용합니다.

예를 들어 Google은 사용자의 이메일과 비밀번호를 데이터베이스에 저장합니다. 이제 Google 직원은 개발 목적으로 데이터베이스에 액세스할 수 있습니다. 하지만 데이터베이스에서 사용자의 이메일과 비밀번호를 얻을 수 있습니까? 아니요, 비밀번호는 해시된 형식으로 저장되므로 비밀번호를 해독하려면 직원에게 비밀번호 문자열에서 해시를 생성할 때 사용한 키가 필요합니다.

이러한 방식으로 데이터를 해시 형식으로 변환할 수 있습니다. 원본 데이터와 새 데이터를 비교해야 할 때마다 동일한 알고리즘을 사용하여 새 데이터를 해시 값으로 변환하고 이를 원본 데이터의 해시 값과 비교할 수 있습니다. JavaScript에서 문자열로부터 해시를 생성하는 방법을 알아봅니다.

문자열을 해시로 변환하는 알고리즘 만들기

이 방법에서는 문자열에서 해시 값을 생성하는 사용자 정의 함수를 만듭니다. 각 문자열 문자의 ASCII 값을 가져와서 곱셈, 덧셈, 뺄셈, OR 등과 같은 일부 연산을 수행하고 그로부터 해시를 생성합니다.

문법

사용자는 다음 구문에 따라 문자열에서 해시를 생성할 수 있습니다.

으아악

위 구문에서 hashstring에는 str 문자열의 최종 해시 값이 포함됩니다.

알고리즘

  • 1단계 - hashString 변수를 0으로 초기화합니다.

  • 2단계 - for-of 루프를 사용하여 문자열을 반복합니다.

  • 3단계 - for-of 루프 내에서 각 문자의 ASCII 값을 가져옵니다.

  • 4단계 - 그런 다음 hashString을 왼쪽으로 5만큼 이동하고 31을 곱한 다음 hashString을 뺍니다.

  • 5단계 - 문자열 문자의 ASCII 값을 hashString 변수에 추가합니다.

  • 6단계 - hashString 변수 값과 그 자체에 대해 OR 연산을 수행합니다.

  • 7단계 - for 루프의 모든 반복이 완료되면 32비트 정수의 최종 해시 값을 얻습니다.

예 1

아래 예에서는 해시를 생성하기 위해 다양한 문자열을 사용했습니다. 우리는 문자열을 매개변수로 취하고 위의 알고리즘을 구현하여 이를 해시 값으로 변환하는 ConvertToHash() 함수를 만들었습니다.

사용자는 출력에서 ​​해시 값을 나타내는 32비트 정수 값을 관찰할 수 있습니다. 또한 동일한 문자열에 대해 항상 동일한 해시 값을 생성한다는 것을 확인할 수 있습니다.

으아악

예 2

아래 예에서는 위의 알고리즘을 구현하여 문자열을 해시로 변환했지만 for 루프 대신 축소 메서드를 사용했습니다. 문자열을 문자 배열로 변환하려면 Split() 메서드를 사용합니다.

이후에는 Reduce() 메소드를 사용하여 콜백 함수를 첫 번째 매개변수로, 두 번째 매개변수로 0을 전달했는데, 이는 해시 변수의 초기값을 나타냅니다. 콜백 함수에서는 각 문자의 ASCII 값을 사용하여 해시 값을 생성합니다.

으아악

crypto-js NPM 패키지 사용

Crpyo-js는 문자열에서 해시를 생성하는 다양한 방법이 포함된 Npm 패키지입니다. 또한 메시지 해독을 위한 일부 알고리즘도 포함되어 있습니다.

사용자는 다음 명령을 사용하여 node 프로젝트에 crypto-js npm 패키지를 설치해야 합니다.

으아악

문법

사용자는 다음 구문에 따라 암호화 및 암호 해독을 위해 crypto-js 패키지를 가져와 사용할 수 있습니다.

으아악

위 구문에서는 cryptoJS 패키지의 AES 모듈의 encrypt() 메서드를 사용했습니다.

매개변수

  • String - 문자열 형식의 메시지나 데이터로 해시를 생성하는 데 사용됩니다.

  • 비밀 키는 알고리즘이 해시를 생성할 때 사용할 비밀 키입니다. 해시만큼 복잡하기 때문에 더욱 안전한 암호화된 텍스트를 생성합니다.

예 3

아래 예에서는 NodeJs 파일에 crypto-js 패키지를 가져왔습니다. 그런 다음 CryptoJs의 AES 모듈에 액세스하고 encrypt() 메서드를 사용하여 문자열에서 해시를 생성합니다.

사용자는 출력에서 ​​AES 알고리즘을 사용하여 생성된 해시 값을 관찰할 수 있습니다.

으아악

출력

으아악

이 튜토리얼에서는 문자열이나 데이터에서 해시를 생성하는 두 가지 방법을 알려줍니다. 첫 번째 방법은 간단하며 키 없이 텍스트를 암호화합니다. 따라서 실제 개발에서는 사용할 수 없습니다.

CryptoJs 패키지에는 다양한 알고리즘을 위한 다양한 모듈이 포함되어 있습니다. 암호화 키를 사용하는 모든 알고리즘에 암호화 방법을 사용할 수 있습니다. 따라서 알고리즘을 알고 있지만 키를 모르더라도 암호문을 해독할 수 없습니다.

위 내용은 JavaScript의 문자열에서 해시를 만드는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:tutorialspoint.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!