Baidu에서 찾은 여러 ASP SHA1 (VBS에서 작성)의 암호화 결과는 ASP.NET의 SHA1 암호화와 다릅니다. ASP.NET SHA1의 암호화가 40 비트 인 후, 인터넷에서 발견 된 ASP SHA1의 암호화는 64 비트입니다. ASP.NET이 가로 채 렸다고 생각했지만 (예 : 인터넷에서 ASP의 MD5 비밀 수는 ASP.NET와 다르므로 가로 채는 문제입니다) ASP의 64 비트 암호화 결과에는 ASP.NET의 40 비트 결과가 포함되어 있지 않습니다. 발견 된 버전은 ASP.NET의 암호화 알고리즘과 다릅니다.
마지막으로 Google을 사용하여 벽을 검색하고 JS 버전의 SHA1 암호화 코드를 찾았으며 ASP와 결합하여 결과를 사용하여 ASP.NET의 SHA1 암호화와 정확히 동일합니다. . 기술 텍스트가 여전히 Google에서는 좋지 않은 것 같습니다. . 중국의 방화벽을 섹스하십시오. . Google도 차단했습니다.
ASP SHA1 암호화의 소스 코드는 다음과 같습니다. 이는 ASP.NET의 SHA1 암호화 결과와 일치합니다.
코드 사본은 다음과 같습니다.
<script language = "javaScript"type = "text/javaScript"runat = "Server">
/*
* 정의 된대로 보안 해시 알고리즘 SHA-1의 JavaScript 구현
* FIPS Pub 180-1
* 버전 2.1A 저작권 Paul Johnston 2000-2002.
* 기타 기고자 : Greg Holt, Andrew Kepert, Ydnar, Lostinet
* BSD 라이센스에 따라 배포됩니다
* 자세한 내용은 http://pajhome.org.uk/crypt/md5를 참조하십시오.
*/
/*
* 구성 가능한 변수. 호환되도록 조정해야 할 수도 있습니다.
* 서버 측이지만 기본값은 대부분의 경우 작동합니다.
*/
var hexcase = 0; /* 육각 출력 형식. 0- 소문자; 1- 대문자 */
var b64pad = "="; /* Base-64 패드 문자. "="엄격한 RFC 준수 */
var chrsz = 8; /* 입력 문자 당 비트. 8 -ASCII; 16- 유니 코드 */
/*
* 이것은 일반적으로 전화하고 싶은 기능입니다.
* 문자열 인수를 취하고 16 진수 또는 Base-64 인코딩 된 문자열을 반환합니다.
*/
함수 hex_sha1 (s) {return binb2Hex (core_sha1 (str2binb (s), s.length * chrsz);}
함수 B64_SHA1 (s) {return binb2b64 (core_sha1 (str2binb (s), s.length * chrsz);}
함수 str_sha1 (s) {return binb2str (core_sha1 (str2binb (s), s.length * chrsz);}
함수 hex_hmac_sha1 (키, 데이터) {return binb2Hex (core_hmac_sha1 (key, data));}
함수 B64_HMAC_SHA1 (키, 데이터) {return BINB2B64 (Core_HMAC_SHA1 (키, 데이터));}
함수 str_hmac_sha1 (키, 데이터) {return binb2str (core_hmac_sha1 (키, 데이터));}
/*
* VM이 작동하는지 확인하기 위해 간단한 자기 테스트를 수행합니다.
*/
함수 SHA1_VM_TEST ()
{
return hex_sha1 ( "ABC") == "A9993E364706816ABA3E25717850C26C9CD0D89D";
}
/*
* 빅 엔디 안 단어 배열의 SHA-1을 계산하고 약간 길이를 계산합니다.
*/
함수 core_sha1 (X, Len)
{
/ * 패딩 추가 */
x [len >> 5] | = 0x80 << (24 -Len % 32);
x [((Len + 64 >> 9) << 4) + 15] = Len;
var w = 배열 (80);