해싱 알고리즘의 조합 구현을 사용해야하는 프로젝트를 진행 중입니다. VHDL/Verilog는 FPGA에서 작업하기를 원하는 대상 언어입니다. 내가 검색을 한 적이 있고, MD5와 SHA1에 대한 RFC 스펙을 보았습니다. 그러나 VHDL/Verilog에서 combinational (클럭을 피하십시오) 구현을 찾을 수없는 것 같습니다. 너는 어떤 것도 알고 있니? 해싱 알고리즘 자체는 최소한 MD1만큼 강력하다면 중요하지 않습니다.해싱 알고리즘의 조합 구현
답변
C로 작성된 MD5 또는 SHA1 구현으로 시작한 다음 알고리즘의 각 단계를 순서도의 단계로 수동 변환합니다. C 코드의 모든 산술 연산 또는 논리 연산은 결합 논리 연산 (게이트)이됩니다. C 코드의 소스 및 대상 변수는 하드웨어 설계의 입력 및 출력 포트가됩니다. C 코드의 임시 변수는 조합 논리 블록을 연결하는 내부 네트워크의 이름이됩니다.
이론적으로 이러한 알고리즘의 순수한 조합 구현을 생성 할 수 있어야합니다. 실질적으로 하드웨어 리소스 (덧셈기, 곱셈기 등)가 너무 많이 필요하고 리소스를 다시 사용해야 할 수도 있습니다. 리소스를 재사용해야하는 즉시 일부 중간 레지스터를 도입해야하며 출력은 특정 클록주기 동안 유효하지 않습니다.
그런 식으로 SHA1을 구현 한 프로젝트를 인터넷에서 보았다고 생각합니다. 이것은 좋은 생각입니다 ... 나는 그것을 줄 것이다. 고맙습니다! – eqb
그건 흥미로운 바보 같은 요구 사항입니다!
당신은 거기서 하나를 찾으려고 노력할 것입니다. 해싱은 대개 처리량이 많아야합니다. 이는 많은 파이프 라이닝과 빠른 클록 및 따라서 레지스터를 의미하는 경향이 있습니다.
비록 쓰기 너무 열심히해서는 안됩니다 :
- 쓰기 모듈/엔티티 오른쪽 순서
for
generate
루프 (또는 해당 Verilog 해당)를 사용하여 필요한 모든 라운드를 만듭니다.
사실 ... 내가 코드에서 직접 VHDL/Verilog로 일부 C 코드를 변환 할 것 같아요. 고맙습니다! – eqb
확인 www.opencores.org/projects
많은 암호화 코어를 사용할 수 있으며 학습 할 소스가 있습니다.
- 1. md5 해싱 알고리즘의 패딩
- 2. Java 구현 SpeedyFX 해싱 알고리즘
- 3. 선형 해싱 구현
- 4. C++ Blowfish 해싱 구현
- 5. 그래프 알고리즘의 PHP 구현
- 6. LZ1 압축 알고리즘의 구현
- 7. 그래프 알고리즘의 C++ 구현
- 8. 포장 알고리즘의 파이썬 구현
- 9. 조합 비트를 찾기위한 알고리즘의 이상한 동작
- 10. AS3의 두 알고리즘의 위력 구현
- 11. GA 내 해싱
- 12. Strassen 알고리즘의 행렬 곱셈 C# 구현
- 13. Madgwick의 센서 융합 알고리즘의 Android 구현
- 14. Java의 검색 및 정렬 알고리즘의 효율적인 구현
- 15. 유클리드 알고리즘의 재귀 구현 - 유형 오류
- 16. Oracle, SQL Server 및 ASP.NET 간의 해싱 구현 방법
- 17. 해싱 유사성
- 18. 범위 해싱
- 19. 해싱, MurmurHash
- 20. 해싱 염분
- 21. Baum Welch 알고리즘의 구현 디버깅 (POS 태깅 용)
- 22. Bentley-Ottmann 알고리즘의 Segment 클래스에 대한 IComparable 구현
- 23. 이 줄은 matlab에서 무엇을 의미합니까? Dijkstra 알고리즘의 간단한 구현
- 24. 조합
- 25. 조합
- 26. 조합
- 27. GJK- 알고리즘의 지원 기능
- 28. 불변의 사전을 파이썬으로 해싱
- 29. 조합 세로 및 가로 조합
- 30. 알고리즘의 복잡성
비동기식 디자인이기 때문에 순수하게 조합해야합니까? –
코드의 합성 된 버전에서만 룩업 테이블을 갖기를 원하기 때문에 순수하게 조합해야합니다. – eqb