Code Monkey home page Code Monkey logo

cryptography's Introduction

密码编码学实践

1. 目录介绍

  • md2-constants
    • 《MD2中用于随机置换的S盒是如何生成的?》源码
  • md2
    • 《MD2哈希算法实现(附源码)》源码
  • md4
    • MD4算法源码
  • md5
    • MD5算法源码
  • sha1
    • SHA1算法源码
  • sha256
    • SHA256及SHA224算法源码
  • sha512
    • SHA512及SHA384, SHA512-224, SHA512-256, SHA512/t算法源码
  • sm3
    • 国密SM3算法源码

2. 如何使用

下载:

$ git clone https://github.com/guyongqiangx/cryptography.git

编译, 编译完会自动运行测试。:

$ cd cryptography
cryptography$ cd sha1
cryptography/sha1$
cryptography/sha1$ make
gcc -Wall -g -O2 -c utils.c -o utils.o
gcc -Wall -g -O2 -c sha1.c -o sha1.o
gcc -Wall -g -O2 -c sha1test.c -o sha1test.o
gcc -Wall -g -O2 utils.o sha1.o sha1test.o -o sha1

Run Test...
./sha1 -x
Internal hash tests for ./sha1:
./sha1("")
  Expect: da39a3ee5e6b4b0d3255bfef95601890afd80709
  Result: da39a3ee5e6b4b0d3255bfef95601890afd80709

./sha1("a")
  Expect: 86f7e437faa5a7fce15d1ddcb9eaeaea377667b8
  Result: 86f7e437faa5a7fce15d1ddcb9eaeaea377667b8

./sha1("abc")
  Expect: a9993e364706816aba3e25717850c26c9cd0d89d
  Result: a9993e364706816aba3e25717850c26c9cd0d89d

./sha1("message digest")
  Expect: c12252ceda8be8994d5fa0290a47231c1d16aae3
  Result: c12252ceda8be8994d5fa0290a47231c1d16aae3

./sha1("abcdefghijklmnopqrstuvwxyz")
  Expect: 32d10c7b8cf96570ca04ce37f2a19d84240d3a89
  Result: 32d10c7b8cf96570ca04ce37f2a19d84240d3a89

./sha1("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789")
  Expect: 761c457bf73b14d27e9e9265c46f4b4dda11f940
  Result: 761c457bf73b14d27e9e9265c46f4b4dda11f940

./sha1("12345678901234567890123456789012345678901234567890123456789012345678901234567890")
  Expect: 50abf5706a150990a08b2c5ea40fa0e585554732
  Result: 50abf5706a150990a08b2c5ea40fa0e585554732

cryptography/sha1$

测试例子不仅只是测试,还可以当做哈希工具使用:

cryptography/sha1$ ./sha1 -h
Usage:
Common options: [-x|-f file|-s string|-h]
Hash a string:
        ./sha1 -s string
Hash a file:
        ./sha1 -f file [-k key]
-x      Internal string hash test
-h      Display this message

计算字符串哈希:

cryptography/sha1$ ./sha1 -s "I like moon!"
./sha1("I like moon!") = 60580c84e774081d149596819fa8a2499c76f5d8
cryptography/sha1$ echo -n "I like moon!" | openssl dgst -sha1
(stdin)= 60580c84e774081d149596819fa8a2499c76f5d8

计算文件哈希:

cryptography/sha1$ ./sha1 -f sha1.o
./sha1(sha1.o) = fb70f3ceef0917427fc6eb795816826756132e15
cryptography/sha1$ openssl dgst -sha1 sha1.o
SHA1(sha1.o)= fb70f3ceef0917427fc6eb795816826756132e15

cryptography's People

Contributors

guyongqiangx avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.