[問題] 關於加解密 除了函式庫以外的方式?

看板C_Sharp (C#)作者 (I am an agent of chaos)時間9年前 (2015/11/12 16:44), 9年前編輯推噓0(008)
留言8則, 2人參與, 最新討論串1/1
各位前輩 想請教一下有沒有常規之外的加解密方式 內部使用而已但是又不想用一般的方法。 有沒有像是簡單抽換字面邏輯思考呢? 我手邊有一個是,string轉成 int的 大概是利用acsii 還原是用取餘數的方式但其實不是很懂他的方法。 羅列如下 ------------------- //加密 string Encrypt(string strSorc) { string strDest = ""; for (int intFt = 0; intFt < strSorc.Length; intFt++) { strDest += ((int)strSorc[intFt] ^ ((int)strkey[intFt % strkey.Length])).ToString() + ","; } return strDest; } //解密 string Decrypt(string[] strSorc) { string strDest = ""; for (int intFt = 0; intFt < strSorc.Length - 1; intFt++) { strDest += (Char)(Convert.ToInt32(strSorc[intFt]) ^ ((int)strkey[(intFt) % strkey.Length])); } return strDest; } ------------------------------ strkey是有定義的字串 類似密鑰 我比較看不太懂 ^ 後面的意思 我的理解是 一整串的數字因為是用,分個丟進去array 以後 for 迴圈一個一個下去 轉型但是 ^ 後面是取餘數 ^ 是其中一方為真就是真 但是下中斷點後不太知道他輸出的過程 ....... 懇請各位解惑 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 218.32.74.63 ※ 文章網址: https://www.ptt.cc/bbs/C_Sharp/M.1447317859.A.9B9.html

11/12 18:30, , 1F
這只是把每個char跟key string的char做 ^ (exclusive or)
11/12 18:30, 1F

11/12 18:30, , 2F
取餘數那只是key string長度可能比輸入值短,key string用
11/12 18:30, 2F

11/12 18:30, , 3F
完一輪再重頭繼續用而已
11/12 18:30, 3F

11/12 18:33, , 4F
因為 (a^b)^b = a,所以還原 = 加密,你貼的程式碼感覺有錯
11/12 18:33, 4F

11/12 18:36, , 5F
還原看起來輸入前還要再多做一次string split
11/12 18:36, 5F

11/12 18:37, , 6F
如果沒有安全性需求,方法要多少有多少隨便做都有
11/12 18:37, 6F

11/12 18:38, , 7F
有安全性需求的,絕對不要自己寫
11/12 18:38, 7F
感謝 我再來研究看看好了 ~~~多謝你 ※ 編輯: neo5277 (111.248.73.245), 11/12/2015 18:52:26

11/12 19:51, , 8F
用AES就好啦,好寫效率高還支援硬體加速
11/12 19:51, 8F
文章代碼(AID): #1MH55Zcv (C_Sharp)
文章代碼(AID): #1MH55Zcv (C_Sharp)