密碼學 鍊錶

2021-08-20 01:30:51 字數 1773 閱讀 4105

資料結構鍊錶

下面我們來寫乙個單向的簡單鍊錶,首先我們要宣告乙個頭節點是為了儲存頭節點資訊,同理宣告乙個當前節點儲存當前節點的資訊,再然後宣告乙個節點型別的結構體,裡面有兩個變數,乙個是節點的儲存資料,資料型別為字串,另乙個是下乙個節點的位址資料型別節點的指標型別。(package linknodes的內容寫在linknodes資料夾下的node.go檔案中)

package linknodes

import "fmt"

//宣告全域性變數,儲存頭節點

var head *node

var curr *node //當前節點

//宣告節點型別

type node struct

接下來我們首先建立乙個頭節點,需要注意的是在設定完資料域和位址域後,要把頭節點資訊賦予前面宣告的全域性變數head,這個head變數在後面很多方法裡我們都需要用到。

//建立頭節點

func createheadnode(data string) *node

接下來我們來建立多種操作鍊錶的方法:

//新增新節點

func addnode(data string) *node

//遍歷鍊錶

func shownodes() else }}

//計算節點的個數

func nodecnt() int else

}return cnt

}//插入節點

func insertnodebyindex(index int, data string) *node else if index > nodecnt()-1 else

var newnode *node = new(node)

newnode.data = data

newnode.nextnode = n.nextnode

n.nextnode = newnode

}return nil

}//刪除節點

func deletenodebyindex(index int) else

node.nextnode = node.nextnode.nextnode}}

//修改指定下標的節點內容

func updatenodebyindex(index int, data string) else

node.data = data

}}

接下來我們在主函式中使用這些方法:

package main

import (

"myhashmap_簡單鍊錶/linknodes"

"fmt"

)func main()

輸出內容為:

hello world!

頭節點第一節點

第二節點

第三節點

第四節點

共有 5 個節點

--------------------------------

頭節點第一節點

abc第二節點

第三節點

第四節點

--------------------------------

頭節點第一節點

第二節點

第三節點

第四節點

--------------------------------

頭節點第一節點

第二節點

abc第四節點

密碼學 密碼學基礎

密碼學是研究編制密碼和破譯密碼的技術科學。密碼學的安全目標至少包含三個方面 保密性 完整性 可用性。完整性 資源只有授權方以授權的方式進行修改,所有資源沒有授權則不能修改。可用性 資源只有在適當的時候被授權方訪問,並按需求使用。密碼系統由5部分組成 1 明文空間m 全體明文的集合 2 密文空間c 全...

密碼學 柵欄密碼

使用的時候通過設定解密的偏移量不一樣的話,會得出不同的解碼內容 一直設定不同的偏移位數 直到找到帶有cyberpeace 開頭的解碼內容 偏移量也就是分組的數字長度 一般就是flag了 有時候它也會全部的解碼都沒有flag的標誌,這時候一定仔細看題目給出的條件 還有的情況就是在題目裡面它會提示給你數...

密碼學 密碼學中幾種攻擊模式

本科畢業設計做完之後,一直覺得自己需要系統來學習一下密碼學,密碼學是乙個古老的學科,前人已經研究了太多太多,而伴隨著量子計算的逐漸發展,之前制定出來的密碼演算法都面臨著被淘汰的危險。今天記錄一下根據密碼分析者知道資訊的多少,密碼學中分為常見的幾種攻擊模式,以及它們主要用於什麼場合。在介紹攻擊模式之前...