MultiversX Tracker is Live!

How do you store your seed physically? I worked on a human friendly encryption and decryption algorithm... feedback?

Etherum Reddit

More / Etherum Reddit 92 Views

I've been thinking about this for a while, a human friendly encryption technique using a simple cipher on an alphabet. This way, instead of storing your seed phrase on a sheet or metal or paper and hiding it, putting it in a safe, or locking it in a bank vault and worrying about it being stolen, you can instead not concern yourself with it but creating a cipher.

This is simple and definitely crackable with time.

Although, you literally lessen your chances of being hacked by anyone non-developer and according to Google on 0.3% of the world population can code. So Let's assume 10% of the people in crypto can, this literally lessens your chances of being hacked through stealing your physical seed by 90%+.

All it does is take a password, counts the delta between the password letter and word letter from the seed phrase to the right, then subtracts that from the password letter to the left, and now you have the encrypted letter.

What's your feed back on this, anything to change?

The most important thing is that this needs to be human friendly like avoiding hashes and other complex to memorize for humans type of encryption techniques.

I have also thought of using some sort of math problem instead of shifting like simply remembering your favorite math equation, affine maybe, etc. and applying that to each letter with a password, instead of shifting.

This is only the first iteration. Took me about an hour or less here. Will probably work on something better

from typing import List alphabet = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"] def encrypt(phrase: List, password: str) -> List: abc_len = len(alphabet) b_len = len(password) a = 0 encrypted_phrase = [] for word in phrase: encrypted_word = "" for letter_count, letter in enumerate(word): a += 1 b_letter = password[(a % b_len) - 1] a_index = alphabet.index(letter) b_index = alphabet.index(b_letter) shift_right = (abc_len - b_index + a_index) % abc_len shift_left = (b_index - shift_right) % abc_len encrypted_letter = alphabet[shift_left] encrypted_word += encrypted_letter if letter_count + 1 >= len(word): encrypted_phrase.append(encrypted_word) encrypted_word = "" return encrypted_phrase def decrypt(phrase: List, password: str) -> List: abc_len = len(alphabet) b_len = len(password) a = 0 decrypted_phrase = [] for word in phrase: decrypted_word = "" for letter_count, letter in enumerate(word): a += 1 b_letter = password[(a % b_len) - 1] a_index = alphabet.index(letter) b_index = alphabet.index(b_letter) shift_right_1 = ((abc_len + b_index - a_index) % abc_len) shift_right_2 = ((b_index + shift_right_1) % abc_len) encrypted_letter = alphabet[shift_right_2] decrypted_word += encrypted_letter if letter_count + 1 >= len(word): decrypted_phrase.append(decrypted_word) decrypted_word = "" return decrypted_phrase encrypted_phrase = encrypt( ["water", "freedom", "capsul", "candy", "soda", "lemon", "vitamin", "pepper", "capsul", "candy", "soda", "lemon"], "ilovemydog" ) print(encrypted_phrase) decrypted_phrase = decrypt( encrypted_phrase, "ilovemydog" ) print(decrypted_phrase) 

So instead of writing down your seed phrase as:

"water", "freedom", "capsul", "candy", "soda", "lemon", "vitamin", "pepper", "capsul", "candy", "soda", "lemon" 

You can openly store is physically with:

'uwjmr', 'tfcyjck', 'aqtgcv', 'amdte', 'yuvw', 'vyacj', 'hipykyp', 'xmhnmr', 'wwrksf', 'ucdfa', 'eszm', 'fsqcv' 

Now, you can store this in a bank vault without worrying about the employees stealing it ;)

And not only can you just remember a password (as well as ensuring you have access to this encrypted copy), as long as you have the copy of the encrypted phrase, this cipher is simple enough to do in your head.

Edits:

After reading the comments one big issue is the spaces. I am now thinking of adding random uppercase letters and numbers into the equation where numbers always mean spaces, or specific numbers mean spaces.

To clarify:

This is about not relying on password standards that some wallets may use, or any hardwares or softwares. One big issue is a lot of us rely on storing our phrases on hard drives or SSD/USBs, etc. I want a way to somewhat safely store my seeds physically while limiting the ability of hacks on them.

submitted by /u/advias
[link] [comments]
Get BONUS $200 for FREE!

You can get bonuses upto $100 FREE BONUS when you:
πŸ’° Install these recommended apps:
πŸ’² SocialGood - 100% Crypto Back on Everyday Shopping
πŸ’² xPortal - The DeFi For The Next Billion
πŸ’² CryptoTab Browser - Lightweight, fast, and ready to mine!
πŸ’° Register on these recommended exchanges:
🟑 Binance🟑 Bitfinex🟑 Bitmart🟑 Bittrex🟑 Bitget
🟑 CoinEx🟑 Crypto.com🟑 Gate.io🟑 Huobi🟑 Kucoin.



Comments