Cipher4j
Pure Implementations for encryption algorithms including DES, RSA, AES, RC4
Install / Use
/learn @cszxyang/Cipher4jREADME
Introduction
Pure Implementations for encryption algorithms including DES, RSA, AES
Usage
Take AES Implementation for example
String plaintext = "passwordTextCase", key = "simpleKeyCase123";
CipherService aesService = new AESCipherService();
String encryptedText = aesService.encrypt(plaintext, key);
aesService.decrypt(encryptedText, key);
Output
DES
For tracing the whole process of DES encryption and decryption, encryption output:
##################### encryption #####################
plaintext 01234567
keyText 12345678
plaintext bits 00110000 00110001 00110010 00110011 00110100 00110101 00110110 00110111
key bits 00110001 00110010 00110011 00110100 00110101 00110110 00110111 00111000
Permuted Choice 1 C0 00000000 00000000 11111111 1111
Permuted Choice 1 D0 01100110 01111000 10000000 1111
Start to generate sub keys......
[1] leftShifting C 00000000 00000001 11111111 1110
[1] leftShifting D 11001100 11110001 00000001 1110
[1] concatChars 00000000 00000001 11111111 11101100 11001111 00010000 00011110
[1] subKey 01010000 00101100 10101100 01010111 00101010 11000010
[2] leftShifting C 00000000 00000011 11111111 1100
[2] leftShifting D 10011001 11100010 00000011 1101
[2] concatChars 00000000 00000011 11111111 11001001 10011110 00100000 00111101
[2] subKey 01010000 10101100 10100100 01010000 10100011 01000111
[3] leftShifting C 00000000 00001111 11111111 0000
[3] leftShifting D 01100111 10001000 00001111 0110
[3] concatChars 00000000 00001111 11111111 00000110 01111000 10000000 11110110
[3] subKey 11010000 10101100 00100110 11110110 10000100 10001100
[4] leftShifting C 00000000 00111111 11111100 0000
[4] leftShifting D 10011110 00100000 00111101 1001
[4] concatChars 00000000 00111111 11111100 00001001 11100010 00000011 11011001
[4] subKey 11100000 10100110 00100110 01001000 00110111 11001011
[5] leftShifting C 00000000 11111111 11110000 0000
[5] leftShifting D 01111000 10000000 11110110 0110
[5] concatChars 00000000 11111111 11110000 00000111 10001000 00001111 01100110
[5] subKey 11100000 10010110 00100110 00111110 11110000 00101001
[6] leftShifting C 00000011 11111111 11000000 0000
[6] leftShifting D 11100010 00000011 11011001 1001
[6] concatChars 00000011 11111111 11000000 00001110 00100000 00111101 10011001
[6] subKey 11100000 10010010 01110010 01100010 01011101 01100010
[7] leftShifting C 00001111 11111111 00000000 0000
[7] leftShifting D 10001000 00001111 01100110 0111
[7] concatChars 00001111 11111111 00000000 00001000 10000000 11110110 01100111
[7] subKey 10100100 11010010 01110010 10001100 10101001 00111010
[8] leftShifting C 00111111 11111100 00000000 0000
[8] leftShifting D 00100000 00111101 10011001 1110
[8] concatChars 00111111 11111100 00000000 00000010 00000011 11011001 10011110
[8] subKey 10100110 01010011 01010010 11100101 01011110 01010000
[9] leftShifting C 01111111 11111000 00000000 0000
[9] leftShifting D 01000000 01111011 00110011 1100
[9] concatChars 01111111 11111000 00000000 00000100 00000111 10110011 00111100
[9] subKey 00100110 01010011 01010011 11001011 10011010 01000000
[10] leftShifting C 11111111 11100000 00000000 0001
[10] leftShifting D 00000001 11101100 11001111 0001
[10] concatChars 11111111 11100000 00000000 00010000 00011110 11001100 11110001
[10] subKey 00101111 01010001 01010001 11010000 11000111 00111100
[11] leftShifting C 11111111 10000000 00000000 0111
[11] leftShifting D 00000111 10110011 00111100 0100
[11] concatChars 11111111 10000000 00000000 01110000 01111011 00110011 11000100
[11] subKey 00001111 01000001 11011001 00011001 00011110 10001100
[12] leftShifting C 11111110 00000000 00000001 1111
[12] leftShifting D 00011110 11001100 11110001 0000
[12] concatChars 11111110 00000000 00000001 11110001 11101100 11001111 00010000
[12] subKey 00011111 01000001 10011001 11011000 01110000 10110001
[13] leftShifting C 11111000 00000000 00000111 1111
[13] leftShifting D 01111011 00110011 11000100 0000
[13] concatChars 11111000 00000000 00000111 11110111 10110011 00111100 01000000
[13] subKey 00011111 00001001 10001001 00100011 01101010 00101101
[14] leftShifting C 11100000 00000000 00011111 1111
[14] leftShifting D 11101100 11001111 00010000 0001
[14] concatChars 11100000 00000000 00011111 11111110 11001100 11110001 00000001
[14] subKey 00011011 00101000 10001101 10110010 00111001 10010010
[15] leftShifting C 10000000 00000000 01111111 1111
[15] leftShifting D 10110011 00111100 01000000 0111
[15] concatChars 10000000 00000000 01111111 11111011 00110011 11000100 00000111
[15] subKey 00011001 00101100 10001100 10100101 00000011 00110111
[16] leftShifting C 00000000 00000000 11111111 1111
[16] leftShifting D 01100110 01111000 10000000 1111
[16] concatChars 00000000 00000000 11111111 11110110 01100111 10001000 00001111
[16] subKey 01010001 00101100 10001100 10100111 01000011 11000000
plaintext after ip 00000000 11111111 11110000 10101010 00000000 11111111 00000000 11001100
L0 00000000 11111111 11110000 10101010
R0 00000000 11111111 00000000 11001100
[f] 32-bit input 00000000 11111111 00000000 11001100
[f] Selection 00000000 00010111 11111110 10000000 00010110 01011000
[f] subKey 01010000 00101100 10101100 01010111 00101010 11000010
[f] xor 01010000 00111011 01010010 11010111 00111100 10011010
[F] SBox 01101101 10000010 00001110 11110000
[f] P Replacement 00010010 01111000 11000111 00011001
[1] left 00000000 11111111 00000000 11001100
[1] right 00010010 10000111 00110111 10110011
[f] 32-bit input 00010010 10000111 00110111 10110011
[f] Selection 10001010 01010100 00001110 10011010 11111101 10100110
[f] subKey 01010000 10101100 10100100 01010000 10100011 01000111
[f] xor 11011010 11111000 10101010 11001010 01011110 11100001
[F] SBox 01110010 01101011 10010010 00100010
[f] P Replacement 11100001 01100011 10000110 01000110
[2] left 00010010 10000111 00110111 10110011
[2] right 11100001 10011100 10000110 10001010
[f] 32-bit input 11100001 10011100 10000110 10001010
[f] Selection 01110000 00111100 11111001 01000000 11010100 01010101
[f] subKey 11010000 10101100 00100110 11110110 10000100 10001100
[f] xor 10100000 10010000 11011111 10110110 01010000 11011001
[F] SBox 11011111 01111001 00100010 00000000
[f] P Replacement 11000100 10101001 11000000 11010110
[3] left 11100001 10011100 10000110 10001010
[3] right 11010110 00101110 11110111 01100101
[f] 32-bit input 11010110 00101110 11110111 01100101
[f] Selection 11101010 11000001 01011101 01111010 11101011 00001011
[f] subKey 11100000 10100110 00100110 01001000 00110111 11001011
[f] xor 00001010 01100111 01111011 00110010 11011100 11000000
[F] SBox 01001011 11110111 10111111 01011101
[f] P Replacement 11111111 01111001 11111001 10101100
[4] left 11010110 00101110 11110111 01100101
[4] right 00011110 11100101 01111111 00100110
[f] 32-bit input 00011110 11100101 01111111 00100110
[f] Selection 00001111 11010111 00001010 10111111 11101001 00001100
[f] subKey 11100000 10010110 00100110 00111110 11110000 00101001
[f] xor 11101111 01000001 00101100 10000001 00011001 00100101
[F] SBox 00001100 10010111 01000110 10111110
[f] P Replacement 10001110 01101110 00010101 00111001
[5] left 00011110 11100101 01111111 00100110
[5] right 01011000 01000000 11100010 01011100
[f] 32-bit input 01011000 01000000 11100010 01011100
[f] Selection 00101111 00000010 00000001 01110000 01000010 11111000
[f] subKey 11100000 10010010 01110010 01100010 01011101 01100010
[f] xor 11001111 10010000 01110011 00010010 00011111 10011010
[F] SBox 10110000 11010100 01000100 00100000
[f] P Replacement 00000100 10000101 00010111 00001010
[6] left 01011000 01000000 11100010 01011100
[6] right 00011010 01100000 01101000 00101100
[f] 32-bit input 00011010 01100000 01101000 00101100
[f] Selection 00001111 01000011 00000000 00110101 00000001 01011000
[f] subKey 10100100 11010010 01110010 10001100 10101001 00111010
[f] xor 10101011 10010001 01110010 101
Related Skills
node-connect
339.3kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
83.9kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
339.3kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
commit-push-pr
83.9kCommit, push, and open a PR
