caesar-cipher.html
来自「经典的数据结构源代码(java 实现)」· HTML 代码 · 共 55 行
HTML
55 行
<html><head><title>Code Fragment</title></head><body text=#000000><center></center><br><br><dl><dd><pre><font color = #ff0080>/** Class for doing encryption and decryption using the Caesar Cipher. */</font><font color=#8000a0>public</font> <font color=#8000a0><font color=#ff8000>class</font> </font>Caesar { <font color=#8000a0><font color=#8000a0>public</font> </font><font color=#8000a0>static</font> <font color=#8000a0><font color=#8000a0>final</font> </font><font color=#8000a0>int</font> ALPHASIZE = 26; <font color=#ff0080>// English alphabet (uppercase only)</font> <font color=#8000a0><font color=#8000a0>public</font> </font><font color=#8000a0>static</font> <font color=#8000a0><font color=#8000a0>final</font> </font><font color=#8000a0>char</font>[] alpha = {'A','B','C','D','E','F','G','H', 'I', 'J','K','L','M', 'N','O','P','Q','R','S','T','U','V','W','X','Y','Z'}; <font color=#8000a0><font color=#8000a0>protected</font> </font><font color=#8000a0>char</font>[] encrypt = <font color=#8000a0><font color=#ff8000>new</font> </font><font color=#8000a0>char</font>[ALPHASIZE]; <font color=#ff0080>// Encryption array</font> <font color=#8000a0><font color=#8000a0>protected</font> </font><font color=#8000a0>char</font>[] decrypt = <font color=#8000a0><font color=#ff8000>new</font> </font><font color=#8000a0>char</font>[ALPHASIZE]; <font color=#ff0080>// Decryption array</font> <font color = #ff0080>/** Constructor that initializes the encryption and decryption arrays */</font> <font color=#8000a0><font color=#8000a0>public</font> </font><font color=#0000ff>Caesar</font>() { <font color=#ff8000>for</font><font color=#0000ff> </font>(<font color=#8000a0>int</font> i=0; i<ALPHASIZE; i++) encrypt[i] = alpha[<font color=#0000ff></font>(i + 3) % ALPHASIZE]; <font color=#ff0080>// rotate alphabet by 3 places</font> <font color=#ff8000>for</font><font color=#0000ff> </font>(<font color=#8000a0>int</font> i=0; i<ALPHASIZE; i++) decrypt[encrypt[i] - 'A'] = alpha[i]; <font color=#ff0080>// decrypt is reverse of encrypt</font> } <font color = #ff0080>/** Encryption method */</font> <font color=#8000a0><font color=#8000a0>public</font> </font><font color=#8000a0>String</font> <font color=#0000ff>encrypt</font>(<font color=#8000a0>String</font> secret) { <font color=#8000a0>char</font>[] mess = secret.<font color=#0000ff>toCharArray</font>(); <font color=#ff0080>// the message array</font> <font color=#ff8000>for</font><font color=#0000ff> </font>(<font color=#8000a0>int</font> i=0; i<mess.length; i++) <font color=#ff0080>// encryption loop</font> <font color=#ff8000>if</font><font color=#0000ff> </font>(Character.<font color=#0000ff>isUpperCase</font>(mess[i])) <font color=#ff0080>// we have a letter to change</font> mess[i] = encrypt[mess[i] - 'A']; <font color=#ff0080>// use letter as an index</font> <font color=#8000a0><font color=#ff8000>return</font> </font><font color=#ff8000>new</font> <font color=#8000a0>String</font><font color=#0000ff></font>(mess); } <font color = #ff0080>/** Decryption method */</font> <font color=#8000a0><font color=#8000a0>public</font> </font><font color=#8000a0>String</font> <font color=#0000ff>decrypt</font>(<font color=#8000a0>String</font> secret) { <font color=#8000a0>char</font>[] mess = secret.<font color=#0000ff>toCharArray</font>(); <font color=#ff0080>// the message array</font> <font color=#ff8000>for</font><font color=#0000ff> </font>(<font color=#8000a0>int</font> i=0; i<mess.length; i++) <font color=#ff0080>// decryption loop</font> <font color=#ff8000>if</font><font color=#0000ff> </font>(Character.<font color=#0000ff>isUpperCase</font>(mess[i])) <font color=#ff0080>// we have a letter to change</font> mess[i] = decrypt[mess[i] - 'A']; <font color=#ff0080>// use letter as an index</font> <font color=#8000a0><font color=#ff8000>return</font> </font><font color=#ff8000>new</font> <font color=#8000a0>String</font><font color=#0000ff></font>(mess); } <font color = #ff0080>/** Simple main method for testing the Caesar cipher */</font> <font color=#8000a0><font color=#8000a0>public</font> </font><font color=#8000a0>static</font> <font color=#8000a0><font color=#8000a0>void</font> </font><font color=#0000ff>main</font>(<font color=#8000a0>String</font>[] args) { <font color=#8000a0>Caesar </font>cipher = <font color=#8000a0><font color=#ff8000>new</font> </font><font color=#0000ff>Caesar</font>(); <font color=#ff0080>// Create a Caesar cipher object</font> System.out.<font color=#0000ff>println</font>(<font color=#008000>"Encryption order = "</font> + <font color=#8000a0><font color=#ff8000>new</font> </font><font color=#8000a0>String</font><font color=#0000ff></font>(cipher.encrypt)); System.out.<font color=#0000ff>println</font>(<font color=#008000>"Decryption order = "</font> + <font color=#8000a0><font color=#ff8000>new</font> </font><font color=#8000a0>String</font><font color=#0000ff></font>(cipher.decrypt)); <font color=#8000a0><font color=#8000a0>String</font> </font>secret = <font color=#008000>"THE EAGLE IS IN PLAY; MEET AT JOE'S."</font>; secret = cipher.<font color=#0000ff>encrypt</font>(secret); System.out.<font color=#0000ff>println</font>(secret); <font color=#ff0080>// the ciphertext</font> secret = cipher.<font color=#0000ff>decrypt</font>(secret); System.out.<font color=#0000ff>println</font>(secret); <font color=#ff0080>// should be plaintext again</font> }}</dl></body></html>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?