Szyfrowanie symetryczne AES256 dowolnego tekstu
- Weteran
- Posty: 4615
- Rejestracja: 14 kwietnia 2016
- Reputacja: 2682
Szyfrowanie symetryczne AES256 dowolnego tekstu
Postautor: mecenas » środa, 19 lutego 2020, 22:27
Chodzi mi o możliwość symetrycznego szyfrowania/deszyfrowania dowolnego tekstu (nie plików) algorytmem AES256.
Najwygodniej, jak byłby to jakiś gotowy pakiet z GUI pod linuxem.
Ale jeśli nie ma takiego, to cokolwiek, co jest opensource i działa off_line.
mecenas
akos
- Weteran
- Posty: 4615
- Rejestracja: 14 kwietnia 2016
- Reputacja: 2682
Szyfrowanie symetryczne AES256 dowolnego tekstu
Postautor: mecenas » czwartek, 20 lutego 2020, 06:22
- Ale dzięki za link.
mecenas
- Weteran
- Posty: 1175
- Rejestracja: 18 września 2016
- Reputacja: 276
- Napiwki: https://tippin.me/@c_witold
Szyfrowanie symetryczne AES256 dowolnego tekstu
Postautor: WitoldC » czwartek, 20 lutego 2020, 11:26
Dodano po 2 godzinach 26 minutach 49 sekundach:
Tak z ciekawości wie ktoś dlaczego takie coś
Kod: Zaznacz cały
echo "text" | openssl enc -aes-256-cbc -a -k password -nosalt
Dodano po 2 godzinach 32 minutach 46 sekundach:
@fusywszklanejkuli masz jakiś pomysł co by trzeba było zrobić (przetestowałem -md z wszystkimi dostępnymi "Message Digest"'ami)?
WitoldC
- Weteran
- Posty: 3269
- Rejestracja: 31 marca 2017
- Reputacja: 3705
Szyfrowanie symetryczne AES256 dowolnego tekstu
Postautor: akos » czwartek, 20 lutego 2020, 15:57
Nie mam pod ręką konsoli żeby to zweryfikować, ale użyłeś trybu cbc w openssl a link do narzędzia online, który podałeś nie prowadzi do https://encode-decode.com/aes-256-cbc-encrypt-online/ tylko do https://encode-decode.com/aes256-encrypt-online/ czyli do trybu domyślnego, prawdopodobnie ecb. Sprawdź co generuje https://encode-decode.com/aes-256-cbc-encrypt-online/
Więcej o trybach: https://stackoverflow.com/questions/122 ... tr-ocb-cfb
@mecenas
Jeśli gui nie jest dla Ciebie najistotniejsze, to możesz sprawdzić jeszcze wersję pythonową albo openssl jak radzi WitoldC.
akos
- Weteran
- Posty: 4615
- Rejestracja: 14 kwietnia 2016
- Reputacja: 2682
Szyfrowanie symetryczne AES256 dowolnego tekstu
Postautor: mecenas » czwartek, 20 lutego 2020, 16:12
mecenas
- Weteran
- Posty: 1175
- Rejestracja: 18 września 2016
- Reputacja: 276
- Napiwki: https://tippin.me/@c_witold
Szyfrowanie symetryczne AES256 dowolnego tekstu
Postautor: WitoldC » czwartek, 20 lutego 2020, 16:49
@fusywszklanejkuli wspomniał że powinno być echo z parametrem -n żeby nie generowało na końcu \n (newline).
Najbardziej mnie zdziwiło że w linuksie stworzyłem nowy dokument tekstowy, otwarłem, wpisałem text, zapisałem i plik miał 5 bajtów na końcu \n
WitoldC
- Weteran
- Posty: 3269
- Rejestracja: 31 marca 2017
- Reputacja: 3705
Szyfrowanie symetryczne AES256 dowolnego tekstu
Postautor: akos » czwartek, 20 lutego 2020, 19:30
Faktycznie, domyślnie jest tam cbc. Fusy napisał, że różnica może wynikać z innej wartości wektora inicjującego, np.
Kod: Zaznacz cały
echo "text" -n | openssl enc -aes-256-cbc -a -k password -nosalt -iv "0"
Kod: Zaznacz cały
AzxHLnzRMd7rIi6Qw5KKDg==
Kod: Zaznacz cały
echo "text" -n | openssl enc -aes-256-cbc -a -k password -nosalt -iv "f"
Kod: Zaznacz cały
0coZjANz6EBeuoEqRqNDrw==
akos
- Weteran
- Posty: 1130
- Rejestracja: 12 sierpnia 2017
- Reputacja: 3358
Szyfrowanie symetryczne AES256 dowolnego tekstu
Postautor: fusywszklanejkuli » czwartek, 20 lutego 2020, 23:06
Na różnice w działaniu konkretnych implementacji mają wpływ wstępna obróbka danych jeszcze przed samym szyfrowaniem (rozmaite sposoby (*) otrzymywania klucza szyfrującego oraz wektora inicjującego), a nawet format wyniku (np. w przypadku interesujących mnie wywołań openssl to "Salted__" + ośmiobajtowa sól + zaszyfrowane dane). Dlatego na rozgryzienie https://encode-decode.com/aes256-encrypt-online/ już nie miałem ochoty.
(*) W tym lepsze i gorsze, np. domyślny sposób używany przez openssl jest niepolecany, co jest wyraźnie sygnalizowane komunikatem *** WARNING : deprecated key derivation used. Using -iter or -pbkdf2 would be better.
PS Przez white-space: normal w linii 554 pliku styles/Subway/theme/content.css znacznik code nie honoruje końców linii, dlatego użyłem pre.
Polecenia, wyniki i program:
$ echo -n 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua._____' | openssl enc -aes-256-cbc -md sha256 -nopad -k 'exercitation ullamco laboris' -S 5555555555555555 -a -p *** WARNING : deprecated key derivation used. Using -iter or -pbkdf2 would be better. salt=5555555555555555 key=67A8FDD6D836BBF5C95D135381D2871364979CEADA015651D33D9AB74CA201C8 iv =2C9EEFFDD0B5CB0A8A7316CED8F17651 U2FsdGVkX19VVVVVVVVVVdSkNHWdQVVES5Y/kzLfjBpvfDgonw04zYC9YWM/0HAd V/Y/WuPBmdK0a2w3ffOit2mdwByU+42dv+RIItqzSohDBvqyL615XVjXduXO65qQ Wy+Wg7ABPeylVAJPfOU001NoKVZYMtVz0uMXkvfFZkwn8sgZA3Zbf8f1wmGGShB3 $ echo -n 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua._____' | openssl enc -aes-256-cbc -md sha256 -nopad -k 'exercitation ullamco laboris' -S 5555555555555555 -a -p -iter 1000 salt=5555555555555555 key=7552B6DB4953D3C7B7BB6750A8BC2F84A0AA7A1E7FECF67F6C936A04A4A934BC iv =237E9933594E9ACB05BAA76EFDD73F63 U2FsdGVkX19VVVVVVVVVVZ4ANSMYver2HCtKYCf5nELxm+upAX3fLhrW0QW9Mehq d7SlOOljKaVcE2bPRarvvhvLCWDtb2o9iAzZZhx/ovWKGqY5KmKdF3OhEhqvW0ne H5kZpYO/kljodlDlh3s3RLMY2DrZ4d6UZrLYUph8SGwFMXJvpG4yevyH1qHuO2l1
Program (można uruchomić w repl.it)
package main import ( "bytes" "crypto/aes" "crypto/cipher" "crypto/sha256" "encoding/base64" "encoding/hex" "fmt" "golang.org/x/crypto/pbkdf2" ) var aes256KeySize = 256 / 8 var saltSize = 8 var opensslSalted__ = []byte("Salted__") func keyivDefault(password, salt []byte, iter int) ([]byte, []byte) { if len(salt) != saltSize { panic("invalid salt size") } dk := []byte("") hash := []byte("") for len(dk) < aes256KeySize+aes.BlockSize { h := sha256.New() h.Write(hash) h.Write(password) h.Write(salt) hash = h.Sum(nil) dk = append(dk, hash...) } key := dk[:aes256KeySize] iv := dk[aes256KeySize : aes256KeySize+aes.BlockSize] fmt.Printf("salt=%X\n", salt) fmt.Printf("key=%X\n", key) fmt.Printf("iv =%X\n", iv) return key, iv } func keyivPBKDF2(password, salt []byte, iter int) ([]byte, []byte) { if len(salt) != saltSize { panic("invalid salt size") } dk := pbkdf2.Key(password, salt, iter, aes256KeySize+aes.BlockSize, sha256.New) key := dk[:aes256KeySize] iv := dk[aes256KeySize:] fmt.Printf("salt=%X\n", salt) fmt.Printf("key=%X\n", key) fmt.Printf("iv =%X\n", iv) return key, iv } func encrypt(plaintext, password, salt []byte, kdf func(password, salt []byte, iter int) ([]byte, []byte), iter int) []byte { fmt.Println("\nencrypting...") if len(plaintext)%aes.BlockSize != 0 { panic("plaintext size is not a multiple of the block size") } key, iv := kdf(password, salt, iter) block, err := aes.NewCipher(key) if err != nil { panic(err) } ciphertext := make([]byte, len(opensslSalted__)+saltSize+len(plaintext)) s := ciphertext copy(s, opensslSalted__) s = s[len(opensslSalted__):] copy(s, salt) s = s[saltSize:] mode := cipher.NewCBCEncrypter(block, iv) mode.CryptBlocks(s, plaintext) fmt.Printf("ciphertext=%X\n", ciphertext) fmt.Printf("ciphertext_base64=%s\n", base64.StdEncoding.EncodeToString(ciphertext)) return ciphertext } func decrypt(ciphertext, password []byte, kdf func(password, salt []byte, iter int) ([]byte, []byte), iter int) { fmt.Println("\ndecrypting...") fmt.Printf("ciphertext=%X\n", ciphertext) if len(ciphertext) < len(opensslSalted__)+saltSize { panic("ciphertext too short") } s := ciphertext if !bytes.Equal(s[:len(opensslSalted__)], opensslSalted__) { panic("invalid openssl ciphertext") } s = s[len(opensslSalted__):] salt := s[:saltSize] key, iv := kdf(password, salt, iter) block, err := aes.NewCipher(key) if err != nil { panic(err) } s = s[saltSize:] if len(s)%aes.BlockSize != 0 { panic("ciphertext size is not a multiple of the block size") } mode := cipher.NewCBCDecrypter(block, iv) plaintext := make([]byte, len(s)) mode.CryptBlocks(plaintext, s) fmt.Printf("plaintext=%s\n", plaintext) } func main() { password := []byte("exercitation ullamco laboris") salt, _ := hex.DecodeString("5555555555555555") pbkdf2Iter := 1000 for _, v := range []struct { keyivname string keyiv func(password, salt []byte, iter int) ([]byte, []byte) ciphertextb64 string }{ {"default", keyivDefault, `U2FsdGVkX19VVVVVVVVVVdSkNHWdQVVES5Y/kzLfjBpvfDgonw04zYC9YWM/0HAd V/Y/WuPBmdK0a2w3ffOit2mdwByU+42dv+RIItqzSohDBvqyL615XVjXduXO65qQ Wy+Wg7ABPeylVAJPfOU001NoKVZYMtVz0uMXkvfFZkwn8sgZA3Zbf8f1wmGGShB3`}, {"PBKDF2", keyivPBKDF2, `U2FsdGVkX19VVVVVVVVVVZ4ANSMYver2HCtKYCf5nELxm+upAX3fLhrW0QW9Mehq d7SlOOljKaVcE2bPRarvvhvLCWDtb2o9iAzZZhx/ovWKGqY5KmKdF3OhEhqvW0ne H5kZpYO/kljodlDlh3s3RLMY2DrZ4d6UZrLYUph8SGwFMXJvpG4yevyH1qHuO2l1`}, } { fmt.Printf("\nusing %s openssl key and iv derivation\n", v.keyivname) encrypted := encrypt([]byte("Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua._____"), password, salt, v.keyiv, pbkdf2Iter) ciphertext, _ := base64.StdEncoding.DecodeString(v.ciphertextb64) if !bytes.Equal(encrypted, ciphertext) { fmt.Println("...unexpected encryption result!") } decrypt(ciphertext, password, v.keyiv, pbkdf2Iter) } }
fusywszklanejkuli
- Weteran
- Posty: 2518
- Rejestracja: 21 marca 2014
- Reputacja: 1468
Szyfrowanie symetryczne AES256 dowolnego tekstu
Postautor: The Real McCoin » piątek, 21 lutego 2020, 00:26
mecenas pisze: ↑ środa, 19 lutego 2020, 22:27Potrzebuję narzędzia offline podobnego do tego: https://encode-decode.com/aes256-encrypt-online/
Proszę: https://a3diti.github.io/aes256-offline/
The Real McCoin
- Weteran
- Posty: 4615
- Rejestracja: 14 kwietnia 2016
- Reputacja: 2682
Szyfrowanie symetryczne AES256 dowolnego tekstu
Postautor: mecenas » piątek, 21 lutego 2020, 06:53
Dziękuję serdecznie.The Real McCoin pisze: ↑ piątek, 21 lutego 2020, 00:26Proszę: https://a3diti.github.io/aes256-offline/
Ciekawe, że algorytm AES-256-CBC zwraca tutaj inny wynik niż taki sam (?) AES-256-CBC na stronce:
https://encode-decode.com/aes-256-cbc-encrypt-online/
mecenas
- Weteran
- Posty: 2518
- Rejestracja: 21 marca 2014
- Reputacja: 1468
Szyfrowanie symetryczne AES256 dowolnego tekstu
Postautor: The Real McCoin » piątek, 21 lutego 2020, 07:25
Szyfrowanie tutaj zwraca inny wynik za każdym razem.
Nawet jeżeli użyjesz tego samego hasła i tekstu jawnego.
To dlatego, że hasło tutaj jest solone (sól dopisywana jest do szyfrogramu), powstaje inny klucz szyfrujący i przez to szyfrogram.
The Real McCoin
- Weteran
- Posty: 1175
- Rejestracja: 18 września 2016
- Reputacja: 276
- Napiwki: https://tippin.me/@c_witold
Szyfrowanie symetryczne AES256 dowolnego tekstu
Postautor: WitoldC » piątek, 21 lutego 2020, 12:05
<html>
<head>
<title>PHP Test</title>
</head>
<body>
<?php
$key="password";
$plaintext = "text";
$cipher = "aes-256-cbc";
$ivlen = openssl_cipher_iv_length($cipher);
$iv = openssl_random_pseudo_bytes($ivlen);
$ciphertext = openssl_encrypt($plaintext, $cipher, $key, $options=0);
echo $ciphertext."\r\n";
$original_plaintext = openssl_decrypt($ciphertext, $cipher, $key, $options=0);
echo $original_plaintext."\n";
?>
</body>
</html>
Kod: Zaznacz cały
PHP Warning: openssl_encrypt(): Using an empty Initialization Vector (iv) is potentially insecure and not recommended
WitoldC
- Weteran
- Posty: 1130
- Rejestracja: 12 sierpnia 2017
- Reputacja: 3358
Szyfrowanie symetryczne AES256 dowolnego tekstu
Postautor: fusywszklanejkuli » piątek, 21 lutego 2020, 12:47
$ echo -n text | openssl enc -aes-256-cbc -K $(echo -n password | xxd -ps) -iv 0 -nosalt -a -p hex string is too short, padding with zero bytes to length hex string is too short, padding with zero bytes to length key=70617373776F7264000000000000000000000000000000000000000000000000 iv =00000000000000000000000000000000 upYAR29CYgqPzkp5gclTuA==
Strona https://a3diti.github.io/aes256-offline/ jest lepsza, choć można jej zarzucić używanie kiepskiej metody uzyskiwania klucza i IV oraz przestarzałego MD5:
$ echo "U2FsdGVkX1+21O5RB08bavFTq7Yq/gChmXrO3f00tvJaT55A5pPvqw0zFVnHSW1o" | openssl enc -d -aes-256-cbc -md md5 -k password -a -p *** WARNING : deprecated key derivation used. Using -iter or -pbkdf2 would be better. salt=B6D4EE51074F1B6A key=F131BF996CF4AC205031D1D02F4F6ACE9E79F1540482F3B9B1198E0D85F7FD0F iv =1568D012C4856CC549484173CB2DCDCC Made with Gibberish
fusywszklanejkuli
- Początkujący
- Posty: 129
- Rejestracja: 2 marca 2017
- Reputacja: 28
Szyfrowanie symetryczne AES256 dowolnego tekstu
Postautor: caps89 » wtorek, 25 lutego 2020, 11:30
caps89
- Moderator
- Posty: 11686
- Rejestracja: 16 lutego 2013
- Reputacja: 3879
Szyfrowanie symetryczne AES256 dowolnego tekstu
Postautor: Bit-els » wtorek, 25 lutego 2020, 12:30
https://www.bitaddress.org
Pokręć myszka do 100%
zakładka Paper Wallet,
odhacz Hide art I bip38 encrypt
wpisz hasło
generuj
drukuj
na próbę jak to działa zrób tak na ekranie i zesweepuj klucz prywatny jakimś mobilnym portfelem.
Dostaniesz prośbę o hasło, wpisz, pojawi sie info, że adres jest pusty.
Ale będzie to oznaczało dobrą procedurę
Najlepiej generować takie portfele na kompie odłączonym od netu z pliku ściągniętego z githuba, jest na tej stronie link. I jeśli jeszcze drukarka też jest tylko do takiego offline kompa podłączona, to juz jest naprawdę ok.
Bit-els
- Początkujący
- Posty: 129
- Rejestracja: 2 marca 2017
- Reputacja: 28
Szyfrowanie symetryczne AES256 dowolnego tekstu
Postautor: caps89 » wtorek, 25 lutego 2020, 13:08
caps89
- Weteran
- Posty: 2518
- Rejestracja: 21 marca 2014
- Reputacja: 1468
Szyfrowanie symetryczne AES256 dowolnego tekstu
Postautor: The Real McCoin » wtorek, 25 lutego 2020, 20:34
fusywszklanejkuli pisze: ↑ piątek, 21 lutego 2020, 12:47można jej zarzucić
Widzę, że jesteś koneserem, więc proszę:
https://www.infoencrypt.com/AES 128 encryption, with random IV. And PBKDF2 (Hmac SHA1, 1000 iterations) is used for password. Result is signed with HMAC MD5, for verification, and then encoded using Base64
The Real McCoin
- Weteran
- Posty: 4615
- Rejestracja: 14 kwietnia 2016
- Reputacja: 2682
Szyfrowanie symetryczne AES256 dowolnego tekstu
Postautor: mecenas » wtorek, 25 lutego 2020, 21:09
A co myślicie o tym:
https://pteo.paranoiaworks.mobi/
Dodano po 14 minutach 11 sekundach:
Jest wersja na komputer: https://paranoiaworks.mobi/download/ , piszą, że: "Jest całkowicie darmowy i niezawodny - open source."
- Skąd mam wiedzieć, że to opensource?
mecenas
- Weteran
- Posty: 1175
- Rejestracja: 18 września 2016
- Reputacja: 276
- Napiwki: https://tippin.me/@c_witold
WitoldC
- Bitcoin
- Bezpieczeństwo
- Giełdy i serwisy - zagrożenia
- Anonimowość i bezpieczeństwo w sieci
- Piramidy i scamy
- Bitcoin
- Rozwój projektu
- Twój wkład w rozwój projektu
- Przedszkole
- Pomoc techniczna
- Generowanie monet
- Pomoc
- Ogólnie o miningu
- Mining pools
- Kopacze (miners)
- Sprzęt (hardware) do miningu
- Bitcoin w mediach
- Projekty związane z Bitcoin
- Imprezy, spotkania, konferencje
- Kwestie prawne
- Ciekawostki
- Organizacje charytatywne, zbiórki, dotacje
- Programowanie i wdrożenia
- Ankiety
- Portfele bitcoin
- Dla zaawansowanych - nowi tylko czytają
- Ekonomia
- Rozważania ekonomiczne
- Ankiety ekonomiczne
- Analiza techniczna
- Tutaj zapłacisz bitcoinami
- Polska
- Świat
- Tablica ogłoszeń
- Towary
- Sprzedam
- Kupię
- Zamienię
- Udziały
- Usługi
- Wymiana walut
- Komentarze
- Nagrody
- Wymiana Face-to-Face
- Dolnośląskie
- Kujawsko-pomorskie
- Lubelskie
- Lubuskie
- Łódzkie
- Małopolskie
- Mazowieckie
- Opolskie
- Podkarpackie
- Podlaskie
- Pomorskie
- Śląskie
- Świętokrzyskie
- Warmińsko-mazurskie
- Wielkopolskie
- Zachodniopomorskie
- Cała Polska
- Szukam/dam pracę
- Boty i strategie
- Giełdy, kantory, bitomaty
- Kantory
- Bitomaty
- Inwestycje
- Metale szlachetne
- ICO
- Forki i Alternatywne kryptowaluty
- LiteCoin
- Ekonomia
- Mining
- Ustawienia i konfiguracje
- Linki
- Dogecoin
- Ekonomia
- Mining
- NameCoin
- Ekonomia
- Mining
- Pozostałe
- Scrypt
- SHA256
- Dash
- Ethereum
- ETC
- Lisk
- Bitcoin Cash
- Kopanie kryptowalut
- Kopanie GPU
- Kopanie CPU
- Kopanie ASIC/FPGA
- Kopalnie kryptowalut
- IOTA
- NEO
- Chia
- SCAMY
- Inne
- Linki
- Faucety, kraniki, gry
- Księga skarg i zażaleń
- AMA
- Strona i forum
- Administrator mówi
- Opinie, propozycje, uwagi
- Propozycje banów
Kto jest online
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 10 gości
- Strefa czasowa UTC+02:00
- Na górę
- Zmień szerokość ekranu
- Usuń ciasteczka witryny
O Polskim Forum Bitcoin
Polskie Forum Bitcoin skupia miłośników Bitcoina w Polsce. Tu możesz zadać pytania odnośnie Bitoina lub podyskutować na ciekawe tematy.
Polecamy
Treści na tym forum mają charakter wyłącznie informacyjno-edukacyjny, a posty są wyrazem osobistych poglądów ich autorów. Treśći na forum ani w całości ani w części nie stanowią "rekomendacji" w rozumieniu przepisów Rozporządzenia Ministra Finansów z dnia 19 października 2005 r. w sprawie informacji stanowiących rekomendacje dotyczące instrumentów finansowych, lub ich emitentów (Dz.U. z 2005 r. Nr 206, poz. 1715).