안녕하세요 여러분 어셈블리에서 AES 암호화를 수행하는 데 필요한 코드를 작성하려고합니다. 최신 인텔 설명서가어셈블리에서 AES 구현
을 갖는다AESENC의 XMM1, XMM2/제 소스 피연산자에서 128 비트의 데이터 (상태)에서 동작하는 제 2 소스 피연산자 , AES 암호화 흐름 M128 -Perform 일주 라운드 키 및 결과를 대상 피연산자에 저장합니다.
AESENCLAST의 XMM1, XMM2/M128 -Perform하여 마지막 AES 암호화 흐름 제 소스 피연산자에서 128 비트의 데이터 (상태)에서 동작하는 제 2 소스 피연산자에서 라운드 키 , 라운드 및 저장 결과 대상 피연산자에 있습니다.
AESKEYGENASSIST의 XMM1는 XMM2/M128은 IMM8 라운드 128 비트 소스 피연산자에 지정된 데이터와 8 비트를 이용하여 암호화하는 라운드 키를 생성 향해 단계를 계산함으로써, AES 암호 키를 확대 도와 상수로 지정된 상수는 결과를 대상인 피연산자에 저장합니다.
이렇게하려면 인라인 어셈블리를 시도 할 것이고 C로 수행 된 일반적인 AES와 속도를 비교하기 위해 빌드 할 것입니다! 당신은 128 비트 값으로를 얻고 싶다면 내 첫 브레인 스토밍은 일반적으로 내 probs이나 아이디어에 관한 인라인 어셈블리 에 어떤 도움/브레인 스토밍/공유 아이디어를 XMM을 사용하는 방법을 환영 환호 =)
어셈블리에서 어셈블리의 모든 암호화보다 COBOL 컴파일러를 코딩하고 싶습니다. –
@SanJacint : 암호는 손으로 만들어진 어셈블리가 실제로 좋은 아이디어 인 몇 가지 유스 케이스 중 하나입니다. 고성능을 필요로하는 짧고 잘 정의 된 코드입니다. 그리고 AES의 경우 특별한 지시가 있습니다. – CodesInChaos
FWIW VIA 프로세서의 PadLock (xcrypt *) 명령어는 AES 알고리즘도 지원하며 Intel의 확장 버전보다 오래 동안 사용되었으므로 벤치 마크 된 자료가 많이 있습니다. – ephemient