---
# System prepended metadata

title: ドット連続行列式暗号

---

# ドット連続行列式暗号
## 作り方
1. 平文を用意
2. 何かしらで数列に変換
3. 0と1のみで構成されるn次正方行列の行列式の取りうる値を全て求め、その値を(重複なしで)昇順に並べ、インデックス値と照合させる
4. 3を用いて2で作った数列をインデックス値の最大の値を基数とする数列に置き換える
5. その値になる0と1のみで構成された行列式を作り、並べる(なるべく正方形に近づけること)
6. 0 = 黒, 1 = 白などと決めて塗り分ける

### 2次の場合
2次の場合取りうる値は-1, 0, 1となるため3進数に変換させる

|値|行列式|
|---|---|
|-1|$\begin{vmatrix}0&1\\1&0\end{vmatrix},\:\begin{vmatrix}1&1\\1&0\end{vmatrix},\:\begin{vmatrix}0&1\\1&1\end{vmatrix}$|
|0|$\begin{vmatrix}0&0\\0&0\end{vmatrix},\:\begin{vmatrix}1&0\\0&0\end{vmatrix},\:\begin{vmatrix}0&1\\0&0\end{vmatrix},\:\begin{vmatrix}0&0\\1&0\end{vmatrix},\:\begin{vmatrix}0&0\\0&1\end{vmatrix},\:\begin{vmatrix}1&1\\0&0\end{vmatrix},\:\begin{vmatrix}1&0\\1&0\end{vmatrix},\:\begin{vmatrix}0&0\\1&1\end{vmatrix},\:\begin{vmatrix}0&1\\0&1\end{vmatrix},\:\begin{vmatrix}1&1\\1&1\end{vmatrix}$|
|1|$\begin{vmatrix}1&0\\0&1\end{vmatrix},\:\begin{vmatrix}1&1\\0&1\end{vmatrix},\:\begin{vmatrix}1&0\\1&1\end{vmatrix}$|

## 例
![ex](https://hackmd.io/_uploads/ByrPbcz1A.png)

書き起こし

> 202212210121221112210002201210000000

最後の0をすべて消しUTF-16LEとして解読

> うわ～

## 懸念点
- ドット絵作るのがめんどい<br>→XPMで多少は効率化できるかも
- ミスしやすい + ミスが致命傷になる<br>→いっそのことプログラム作ってしまう?→[作った(2次)](https://github.com/NSK-1010/repdet-ciph)
- 解読方法がわかればすぐ解ける<br>→数列も難化させよう
- 多分0埋めは上位桁のほうでやったほうがいい
