iT邦幫忙

2021 iThome 鐵人賽

DAY 20
0
Software Development

Rust的多方面運用系列 第 20

[Day20] Yew WASM 凱薩密碼簡介以及加密

  • 分享至 

  • xImage
  •  

不知道為啥總感覺進度堪憂,我是說準備工作
之前原本有一個能運行的東西現在運行不了
我翻 commit 紀錄也沒辦法
真的頭痛 ==
總之 今天明天會是最後 Yew WASM 的內容 owob


那麼今天其實有點算是複習篇
因為前面的東西基本上都講過了
那至於題目也不會到太困難

先簡介一下凱薩密碼
凱撒密碼

  • 最簡單且最廣為人知的加密技術。
  • 以替換技術來做加密,
  • 明文中的所有字母都在字母表上向後(或向前)按照一個固定數目進行偏移後被替換成密文。

好 OK 上面應該完整敘述了凱薩密碼是什麼
不懂的可以去 Google 尋找詳細
那至於怎麼實現呢
今天主要會講加密跟解密的部份

pub fn decrypt(content: String, offset: i32) -> String {
    let mut result = String::new();

    for c in content.chars() {
        if c.is_lowercase() {
            let i = c as i32 - offset;
            if i < 97 {
                let i = 122 - (offset - (c as i32 - 97)) + 1;
                result.push(i as u8 as char);
            } else {
                result.push(i as u8 as char);
            }
        } else if c.is_uppercase() {
            let i = c as i32 - offset;
            if i < 65 {
                let i = 90 - (offset - (c as i32 - 65)) + 1;
                result.push(i as u8 as char);
            } else {
                result.push(i as u8 as char);
            }
        }
    }
    result
}

那上面主要是加密的部份,可以看到說定義了一個新的 String 作為回傳
至於下面 for 迴圈的部份則是先判斷現在的位元是否為大寫 / 小寫
以此去做撰寫
那 as 的技巧也有講過了
as 需要注意的問題也就是可能會把長度截斷的問題不會在此處出現
所以可以放心使用 owob
那麼解密部份的撰寫是今天的作業


感覺我的文越來越水了
最近都在想到底要怎麼做才能把 Bevy 的東西 Run 起來
一直跑不出來真的要炸了
總之讓我水一下ㄅ
週末一定弄好的內容出來owob


上一篇
[Day19] 如何在 Yew Wasm 中讀取內容
下一篇
[Day21] 用 WASM 做一個凱薩密碼 加密 / 解密 網站
系列文
Rust的多方面運用30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言