摘要:一凱撒密碼加密代碼思路基本思路設(shè)置明文和位移步長秘鑰將明文轉(zhuǎn)成小寫,準(zhǔn)備明文字節(jié)切片與密文切片循環(huán)將每個明文字符按照位移步長做位移,存入密文切片返回密文導(dǎo)入包包含字符串操作相關(guān)方法凱撒密碼加密代碼一凱撒密碼加密將明文轉(zhuǎn)成小寫將明文字符串轉(zhuǎn)成
一.凱撒密碼加密代碼思路
基本思路:
設(shè)置明文 和 位移步長(秘鑰)
將明文轉(zhuǎn)成小寫,準(zhǔn)備 明文字節(jié)切片 與 密文切片
循環(huán)將每個明文字符 按照 位移步長 做位移,存入密文切片
返回密文
導(dǎo)入包
import ( "fmt" "strings" // 包含字符串操作相關(guān)方法 )
凱撒密碼加密代碼
//一、凱撒密碼加密 func caesarEn(strRaw string, step byte) string { //1.將明文轉(zhuǎn)成小寫 strRaw = strings.ToLower(strRaw) //2.將 明文字符串 轉(zhuǎn)成 明文切片(( 內(nèi)部 存放的 是 ACSII碼 )) str_slice_src := []byte(strRaw) //3.創(chuàng)建密文切片對象 str_slice_dst := make([]byte, len(str_slice_src), len(str_slice_src)) //4.循環(huán)明文切片,將 ASCII碼 + step位移值后 存入 密文切片 for i := 0; i < len(str_slice_src); i++ { //5.判斷 明文字符的ASCII碼 位移后 是否有超過 小寫字母的范圍,如果沒有,則直接使用,如果有超過,則需要 -26 if str_slice_src[i] < 123-step { //直接加上 位移步長 str_slice_dst[i] = str_slice_src[i] + step } else { str_slice_dst[i] = str_slice_src[i] + step - 26 } } fmt.Println("明文:", strRaw, str_slice_src) fmt.Println("密文:", string(str_slice_dst), str_slice_dst) }二.凱撒密碼解密代碼思路
基本思路:
設(shè)置密文 和 位移步長
準(zhǔn)備 密文字符切片 與 明文字符切片
循環(huán)將每個 密文字符 按照位移步長 做位移,存入明文切片
返回明文
凱撒密碼解密代碼
//二、凱撒密碼解密 func caesarDe(strCipher string, step_move byte) string { //1.密文 轉(zhuǎn)成 小寫 str_cipher := strings.ToLower(strCipher) //2.將字符串 轉(zhuǎn)為 密文字符切片 str_slice_src := []byte(str_cipher) //3. 創(chuàng)建 明文字符切片 str_slice_dst := make([]byte, len(str_slice_src), len(str_slice_src)) //4.循環(huán)密文切片 for i := 0; i < len(str_slice_src); i++ { //5.如果當(dāng)前循環(huán)的 密文字符 在位移 范圍內(nèi),則直接 減去 位移步長 存入 明文字符切片 if str_slice_src[i] >= 97+step_move { str_slice_dst[i] = str_slice_src[i] - step_move } else { //6.如果 密文字符 超出 范圍,則 加上 26 后,再向左位移 str_slice_dst[i] = str_slice_src[i] + 26 - step_move } } //7.輸出結(jié)果 fmt.Println("密文:", strCipher, str_slice_src) fmt.Println("明文:", string(str_slice_dst), str_slice_dst) return string(str_slice_dst) }
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/24569.html
摘要:設(shè)置首字母大寫算法挑戰(zhàn)返回一個字符串確保字符串的每個單詞首字母都大寫,其余部分小寫。確認(rèn)末尾字符算法檢查一個字符串是否以指定的字符串結(jié)尾。刪除數(shù)組中特定值算法挑戰(zhàn)刪除數(shù)組中的所有的假值。 在w3cschool上看到了這些初級算法題目,自己先嘗試做了一下,不會的也會查看一下別人的借鑒一下思路,更多的幫助自己熟悉字符串和數(shù)組方法的應(yīng)用.如果您有更好的解法,可以指出來還有中級算法題目和后面的...
摘要:編碼全家桶小程序提供實體莫爾斯電碼等編碼轉(zhuǎn)換工具,凱撒密碼柵欄密碼等加密工具,及地址查詢信息查詢等工具。 CTF編碼全家桶小程序提供Base64、Url、HTML實體、莫爾斯電碼等編碼轉(zhuǎn)換工具,凱撒密碼、柵欄密碼、ROT13、MD5、SHA等加密工具,及IP地址查詢、Whois信息查詢等工具。showImg(https://segmentfault.com/img/bVbiudU?w=...
摘要:歸并排序歸并排序,或,是創(chuàng)建在歸并操作上的一種有效的排序算法,效率為大符號。以此類推,直到所有元素均排序完畢。與快速排序一樣都由托尼霍爾提出的,因而也被稱為霍爾選擇算法。 showImg(https://segmentfault.com/img/remote/1460000019096360);編譯:周素云、蔣寶尚 學(xué)會了Python基礎(chǔ)知識,想進(jìn)階一下,那就來點算法吧!畢竟編程語言只...
摘要:嘛,既然開始學(xué)密碼了,就還是記錄一下自己的學(xué)習(xí)歷程,這樣也會有意思一些,希望自己能夠做到一周寫兩次自己的學(xué)習(xí)進(jìn)度吧,今天先來第一步什么叫密碼學(xué)哦。 嘛,既然開始學(xué)密碼了,就還是記錄一下自己的學(xué)習(xí)歷程,這樣也會有意思一些,希望自己能夠做到一周寫兩次自己的學(xué)習(xí)進(jìn)度吧,今天先來第一步:什么叫密碼學(xué)哦。 最近和教授討論研究的方向,很煩,因為我才剛剛?cè)雽W(xué),信息安全方面的論文要說完整讀下來的基本還...
閱讀 2132·2021-11-23 09:51
閱讀 2881·2021-11-22 15:35
閱讀 2975·2019-08-30 15:53
閱讀 1069·2019-08-30 14:04
閱讀 3304·2019-08-29 12:39
閱讀 1842·2019-08-28 17:57
閱讀 1138·2019-08-26 13:39
閱讀 578·2019-08-26 13:34