Connway's Game of Life 簡介
一個 flutter 應用程序,基於“Connway 的生命遊戲”的概念來模擬細胞網格的增長和控制,以演示“元胞自動機”。
元胞自動機:
元胞自動機 (CA) 是一種用於模擬複雜系統的數學模型,通常表示為可以處於有限數量狀態之一的單元格網格。細胞根據一組規則改變狀態,這些規則決定它們的狀態如何受到周圍細胞狀態的影響。這創造了隨時間演變的模式和結構,通常會產生復雜且看似智能的行為。 CA 用於各種領域,包括物理學、生物學和計算機科學,以研究從模式形成到自組織和湧現行為的各種現象。
康威的生命遊戲:
康威生命遊戲是一種元胞自動機,由數學家約翰·霍頓·康威於 1970 年首次提出。它模擬了簡單的規則,可以生成複雜而有趣的模式。
模擬發生在二維細胞網格上,其中每個細胞要么是“活的”,要么是“死的”。在每一步中,每個單元格的狀態都會根據其八個相鄰單元格的狀態根據以下規則進行更新:
如果一個細胞是活的並且有兩個或三個活的鄰居,它仍然是活的。如果一個細胞已經死了,並且恰好有三個活著的鄰居,它就會復活。在所有其他情況下,細胞死亡或保持死亡狀態。這些簡單的規則可以生成從簡單的振盪器到隨時間演變的複雜形狀的各種模式。生命遊戲經常被用作元胞自動機的一個例子,並被數學家、計算機科學家和其他對複雜系統和緊急行為感興趣的研究人員廣泛研究。
實驗特徵-對稱加密密鑰/IV 生成:
鑑於元胞自動機的性質及其通過多個有限狀態的方式,它可用於生成偽隨機數/字符串,可用於秘密加密密鑰的目的。對稱密鑰生成是指生成可用於以安全方式加密和解密數據的密鑰的過程。在這種方法中,CA 使用隨機初始狀態進行初始化,然後迭代應用規則以生成一系列狀態。然後將狀態序列轉換為可用作密鑰的數字序列。使用 CA 生成對稱密鑰的優點是生成的數字序列具有高度隨機性和不可預測性,這使得攻擊者很難猜出密鑰。此外,CA 可以輕鬆配置為生成不同長度的密鑰,這使其適用於廣泛的加密應用程序。
規格:
以下是此實驗性功能的具體實現細節:
這些加密密鑰是使用元胞自動機的當前狀態生成的:
在密鑰生成時,元胞自動機的當前狀態/生成被轉換為二進製字符串--> 1 表示存活/0 表示死亡。
然後將這個二進製字符串分成 12 個子字符串,每個子字符串都轉換成它的十進制等效數。
然後將這些數字分別編碼為一個字符。這樣就生成了一串行話字符。然後將該字符串分成兩半,用於生成密鑰和初始化向量。
然後,這兩半中的每一個都經過 UTF-8 編碼和 SHA-256 散列。
然後將兩半的前 16 個字節分別轉換為密鑰和 IV。
用於測試如此生成的對稱密鑰的算法是 AES(高級加密標準)。我使用加密程序包來實現 AES 算法,因為我的目的只是展示密鑰生成,而不是重新實現任何加密算法本身。
元胞自動機:
元胞自動機 (CA) 是一種用於模擬複雜系統的數學模型,通常表示為可以處於有限數量狀態之一的單元格網格。細胞根據一組規則改變狀態,這些規則決定它們的狀態如何受到周圍細胞狀態的影響。這創造了隨時間演變的模式和結構,通常會產生復雜且看似智能的行為。 CA 用於各種領域,包括物理學、生物學和計算機科學,以研究從模式形成到自組織和湧現行為的各種現象。
康威的生命遊戲:
康威生命遊戲是一種元胞自動機,由數學家約翰·霍頓·康威於 1970 年首次提出。它模擬了簡單的規則,可以生成複雜而有趣的模式。
模擬發生在二維細胞網格上,其中每個細胞要么是“活的”,要么是“死的”。在每一步中,每個單元格的狀態都會根據其八個相鄰單元格的狀態根據以下規則進行更新:
如果一個細胞是活的並且有兩個或三個活的鄰居,它仍然是活的。如果一個細胞已經死了,並且恰好有三個活著的鄰居,它就會復活。在所有其他情況下,細胞死亡或保持死亡狀態。這些簡單的規則可以生成從簡單的振盪器到隨時間演變的複雜形狀的各種模式。生命遊戲經常被用作元胞自動機的一個例子,並被數學家、計算機科學家和其他對複雜系統和緊急行為感興趣的研究人員廣泛研究。
實驗特徵-對稱加密密鑰/IV 生成:
鑑於元胞自動機的性質及其通過多個有限狀態的方式,它可用於生成偽隨機數/字符串,可用於秘密加密密鑰的目的。對稱密鑰生成是指生成可用於以安全方式加密和解密數據的密鑰的過程。在這種方法中,CA 使用隨機初始狀態進行初始化,然後迭代應用規則以生成一系列狀態。然後將狀態序列轉換為可用作密鑰的數字序列。使用 CA 生成對稱密鑰的優點是生成的數字序列具有高度隨機性和不可預測性,這使得攻擊者很難猜出密鑰。此外,CA 可以輕鬆配置為生成不同長度的密鑰,這使其適用於廣泛的加密應用程序。
規格:
以下是此實驗性功能的具體實現細節:
這些加密密鑰是使用元胞自動機的當前狀態生成的:
在密鑰生成時,元胞自動機的當前狀態/生成被轉換為二進製字符串--> 1 表示存活/0 表示死亡。
然後將這個二進製字符串分成 12 個子字符串,每個子字符串都轉換成它的十進制等效數。
然後將這些數字分別編碼為一個字符。這樣就生成了一串行話字符。然後將該字符串分成兩半,用於生成密鑰和初始化向量。
然後,這兩半中的每一個都經過 UTF-8 編碼和 SHA-256 散列。
然後將兩半的前 16 個字節分別轉換為密鑰和 IV。
用於測試如此生成的對稱密鑰的算法是 AES(高級加密標準)。我使用加密程序包來實現 AES 算法,因為我的目的只是展示密鑰生成,而不是重新實現任何加密算法本身。
展開