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&lt;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&lt;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&lt;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&lt;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 + -
显示快捷键?