자바 펼쳐 AES 암호화 [닫힘]
Javascript에서 AES 256 비트 암호화에 사용할 수있는 라이브러리가 있습니까?
JSAES는 JavaScript에서 AES의 강력한 구현입니다. http://point-at-infinity.org/jsaes/
다음 은 slowAES를 사용 하는 업체 페이지 입니다.
slowAES 는 사용하기 쉬웠습니다. 환경으로 설계되었습니다. 합리적 OO 패키징. IV 및 암호화 모드와 같은 노브 및 마케팅을 지원합니다. .NET / C #과의 우수한 교체. 이름은 혀로 뺨입니다. C ++로 구현되지 않아서 " Slow AES"가 발생합니다. 그러나 내 테스트에서는 비현실적으로 느리지 않습니다.
ECB 모드가 없습니다. 또한 CTR 모드가 부족하지만 ECB 모드가 주어지면 쉽게 만들 수 있습니다.
암호화에서만을. RFC2898 호환 암호 기반 키 파생을 자바 스크립트로 수행하는 멋진 보완 클래스는 아난 에서 구할 수 있습니다 . 이 라이브러리 쌍은 .NET 클래스와 잘 작동합니다. 좋은 상호 운용성. SlowAES와 달리 Javascript PBKDF2는 키 를 생성 할 때 Rfc2898DeriveBytes 클래스보다 눈에 띄게 느립니다 .
AES에서 채택한 모델이 천천히 사용하고 사용하기는 것입니다. AES에 대한 다른 Javascript 라이브러리 중 일부는 이해하고 사용하기 어렵습니다. 예를 들어있는 곳에서는 IV 또는 모드 (CBC, ECB 등)를 사용하지 않습니다. 내가 예상했던 곳이 아니 었습니다. SlowAES는 신뢰할 수 있습니다. 속성은 내가 예상했던 곳에 옳았습니다. Java 및 .NET 암호화 프로그래밍 모델에 쉽게 익힐 수 있습니다.
Anandam의 PBKDF2는 그 수준이 아니 었습니다. DeriveBytes 함수에 대한 단일 호출 만 지원 암호에서 키와 IV를 모두 파생해야하는 경우 라이브러리는 변경하지 않고 작동하지 않습니다. 약간의 수정이 해당 목적을 위해 잘 작동합니다.
편집 : SlowAES 와 아난 의 PBKDF2 수정 버전 을 윈도우 구성 요소 펼쳐 에 패키징 하는 예 를 모았습니다 . 이 AES를 암호로 파생 키와 함께 사용하면 .NET RijndaelManaged 클래스와의 상호 운용성이 좋습니다.
EDIT2 : 데모 페이지 는 웹 페이지 에서이 AES 암호화를 사용하는 방법을 보여줍니다. .NET에서 지원되는 동일한 입력 (iv, 키, 모드 등)을 사용하면 .NET Rijndael 클래스와 좋은 상호 운용성을 제공합니다. "소스보기"를 수행하여 해당 페이지에 대한 javascript를 얻을 수 있습니다.
EDIT3
늦은 추가 : 유해한 메시지가 나오는 Javascript Cryptography. 읽을만한 가치가 있습니다.
AES 암호화 검색에서 일부 Standford 여기서 발견 발견했습니다. 밖에서 가장 빠르다고 주장합니다. CCM, OCB, GCM 및 블록 암호화를 지원합니다. http://crypto.stanford.edu/sjcl/
검색 "JavaScript AES" 에서 몇 가지 예를 찾았습니다. 팝업 된 첫 번째는 알고리즘을 설명하고 솔루션을 제공하도록 설계되었습니다.
이 게시물은 이제 오래 서술 crypto-js 는 이제 가장 완벽한 자바 펼쳐 암호화 라이브러리입니다.
CryptoJS 는 JavaScript로 구현 된 암호화 알고리즘 모음입니다. 여기에는 AES-128, AES-192, AES-256, DES, Triple DES, Rabbit, RC4, RC4Drop 및 해시 : MD5, RIPEMD-160, SHA-1, SHA-256, SHA-512, SHA가 포함됩니다. -3 (224, 256, 384 또는 512 비트).
당신은보고 할 수 있습니다 자신의 가이드를 빠른 스타트 또한 다음과 Node.js를 포트에 대한 참조이다.
node-cryptojs-aes 는 crypto-js 의 node.js 포트입니다.
최근에 자바 스크립트와 제공간에 암호화 / 복호화 상호 운용을 수행해야합니다.
구체적으로 특별히 ...
1) AES를 사용하여 자바 펼쳐에서 암호화하고 Python (Google App Engine)에서 복호화 2) RSA를 사용하여 javascript에서 암호화 및 Python에서 복호화 (Google App Engine) 3) pycrypto 사용
웹에 떠 다니는 RSA와 AES의 다양한 버전을 많이 발견하고 접근 방식이 모두 달랐지만 javascript와 python 상호 운용성에 대한 좋은 예를 찾지 못합니다.
결국 나는 많은 시행 착오가 필요에 따라 조합 할 수 있었다.
어쨌든 나는 AES와 공개 키 및 개인 키 RSA 물건을 사용하는 Google 앱 호스팅 엔진 Python 서버와 대화하는 js / webapp의 예를 두 드렸습니다.
동일한 작업을 수행해야하는 다른 사람들에게 유용 할 경우를 대비하여 여기에 링크로 포함습니다.
http://www.ipowow.com/files/aesrsademo.tar.gz
볼 스탬프 에서 RSA-AES- 데모 DOT appspot 닷컴
편집 : 브라우저 콘솔 출력을보고 소스를보고 견본 에서 무슨 일이 일어나고 있는지에 대한 힌트와 유용한 메시지를 얻습니다.
편집 : 현재 새로운 소스에 대한 매우 오래되고 기능이없는 링크를 업데이트했습니다.
https://sestertii.com/files/aesrsademo.tar.gz
내 경험에 비추어 볼 때 asmcrypto.js 는 JavaScript에서 가장 빠른 AES 구현을 제공합니다 (Firefox에서 asm.js를 완전히 제거 할 수 있기 때문에).
읽어보기에서 :
Chrome/31.0 SHA256: 51 MiB/s (9 times faster than SJCL and CryptoJS) AES-CBC: 47 MiB/s (13 times faster than CryptoJS and 20 times faster than SJCL) Firefox/26.0 SHA256: 144 MiB/s (5 times faster than CryptoJS and 20 times faster than SJCL) AES-CBC: 81 MiB/s (3 times faster than CryptoJS and 8 times faster than SJCL)
편집 : 웹 암호화 API는 이제 대부분의 브라우저에서 구현하고 성능에 대해 걱정하는 경우 기본 솔루션으로 사용해야합니다. IE11은 promise를 사용하지 않는 표준 초안 버전을 구현했습니다.
여기에서 몇 가지 예를 사용할 수 있습니다.
CryptoJS 사용
코드는 다음과 달라집니다 : https://github.com/odedhb/AES-encrypt
그리고 여기에 온라인 작업 예제가 있습니다 : https://odedhb.github.io/AES-encrypt/
asmcrypto.js를 사용 해보세요 . 정말 빠릅니다.
추신 : 저는 저자이고 질문이 있으면 답변 해 드릴 수 있습니다. 또한 피드백을 주시면 기쁩니다 :)
http://www.movable-type.co.uk/scripts/aes.html 라이브러리가 도움이 될 수 있습니다.
http://www.movable-type.co.uk/scripts/aes.html
SSL 사용을 피하기 위해 자바 스크립트를 사용하려는 경우 다시 생각해보십시오. 많은 중간 조치가 있지만 SSL 만이 보안 통신을 제공합니다. Javascript 암호화 라이브러리는 특정 공격 집합에 대해 도움이 될 수 있지만 진정한 중간자 공격은 아닙니다.
맞춤 도메인에서 Google 앱 엔진 용 SSL을 찾고 있다면 wwwizer.com을 살펴보세요 .
다음 게시물은 자바 스크립트로 보안 통신 시도를 생성하는 방법과이를 잘못하는 방법을 설명합니다. SSL / HTTPS 대신 자바 스크립트 암호화 모듈 사용
Cryptojs의 대안으로 Stanford 무료 라이브러리도 있습니다.
http://crypto.stanford.edu/sjcl/
AES-256 지원이 포함 된 또 다른 솔루션 : https://github.com/digitalbazaar/forge
나를 위해 일한 유일한 솔루션은 다음과 같습니다.
http://www.hanewin.net/encrypt/aes/aes.htm
매우 기본적이지만 사용하기 쉽고 잘 작동하는 것 같습니다.
참고 URL : https://stackoverflow.com/questions/793812/javascript-aes-encryption
'IT' 카테고리의 다른 글
“: =”는 무엇을입니까? (0) | 2020.08.10 |
---|---|
Visual Studio에서 Eclipse의 Ctrl + 클릭? (0) | 2020.08.10 |
내가 필요하다 (0) | 2020.08.10 |
Python에서 다른 선 스타일로 주 및 부 격자 선을 만드는 방법 (0) | 2020.08.10 |
모든 약속이 해결 될 때까지 기다리십시오. (0) | 2020.08.10 |