Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 8 odgovora
  • 4.073 pregleda

Najnovija ↓

AES enkripcija i dekripcija 25.12.2008. u 17:57 · pre 217 meseci #1
Pozdrav svima nadam se da ce se nac netko tko ce mi znat rec u cemu grjesin
Radim program za digitalni pecat i koristim se asimetricnim algoritmom rsa i asimetricnim aes i imam problem kod ovog drugog

Evo izvorni kod
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Security.Cryptography;

namespace Digitalni_potpis
{
class AES
{
public byte[] encryptStringToBytes_AES(string plainText, byte[] Key, byte[] IV)
{



RijndaelManaged Cipher = new RijndaelManaged();

ICryptoTransform Encryptor = Cipher.CreateEncryptor(Key, IV);
MemoryStream mStream = new MemoryStream();
CryptoStream cStream = new CryptoStream(mStream, Encryptor, CryptoStreamMode.Write);




byte[] plainBytes = UnicodeEncoding.Unicode.GetBytes(plainText);

cStream.Write(plainBytes, 0, plainBytes.Length-1);
cStream.FlushFinalBlock();

return mStream.ToArray();

}

public string decryptStringFromBytes_AES(byte[] cipherText, byte[] Key, byte[] IV)
{
byte[] cipherBytes = cipherText;


RijndaelManaged Cipher = new RijndaelManaged();

ICryptoTransform Decryptor = Cipher.CreateDecryptor(Key, IV);
MemoryStream ms = new MemoryStream(cipherText);
CryptoStream cs = new CryptoStream(ms, Decryptor, CryptoStreamMode.Read);


byte[] plainBytes = new byte[cipherText.Length];

cs.Read(plainBytes, 0, cipherText.Length-1);



return UnicodeEncoding.Unicode.GetString(plainBytes);



}

}
}
Prilikom debagiranja javi mi gresku da je padding invalid stavljao sam PaddingMode.PKCS7 i jos neke ponudene al ne ide
Ako netko zna u cemu je rijec bio bih mu zahvalan

Pozdrav



Re: AES enkripcija i dekripcija 26.12.2008. u 00:20 · pre 217 meseci #2
Ako pod digitalni pecat mislis digitalni potpis onda ti je greska u startu to sto koristis simetricni AES koji ti za potpis uopste ne treba. Za potpis ti treba hash (npr SHA-1 ili SHA-2) i privatni kljuc asimetricnog algoritma (npr rsa), za verifikaciju potpisa ti treba originalni dokument, digitalni potpis i javni kljuc.

Prebacicu ovu temu u .NET posto je ipak implementacija u pitanju.
Potpis
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog
naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji
je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan,
sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv - Z.Đinđić
Re: AES enkripcija i dekripcija 26.12.2008. u 09:28 · pre 217 meseci #3
Ne radi se o digitalnom potpisu nego o pecatu(Digitalni pečat osigurava sva četiri sigurnosna zahtijeva: tajnost, autentičnost, integritet i neporecivost.) koristim puno toga sql server bazu koja glumi PKI , rsa za komunikaciju javnim i privatnim kljucevima, od simetricnih koristim aes, 3des i des, i takoder imam hasheve sha-1 i md5... Izrada pecata mi ide bez problema al verifikacija me malo zafrkava tj. imam navedeni problem
Program se radi u edukativne svrhe
Re: AES enkripcija i dekripcija 26.12.2008. u 14:23 · pre 217 meseci #4
Znaci to je neki sign & encrypt zajedno? Od koga potice ta definicija, digitalni pecat, prvi put cujem za to (da zanemarimo one pecate sto ljudi stavljaju na SSL sajtove :), sto je smejurija).

U svakom slucaju ne treba ti nista vise od onoga sto propisuje CMS (RFC 3852) ako bas hoces standardizovan mehanizam, a ako samo hoces da ucis dosta ti je i osnovni PKCS#7 standard, evo ti linkovi:

http://tools.ietf.org/html/rfc3852
http://tools.ietf.org/html/rfc2315

za sam bug u kodu cu ti pogledati sutra, ovako mi je sumnjivo baratanje kljucem i saltom za AES. Mislim da bez obzira na to sto prosledjujes Key i IV u CreteEncryptor/Decryptor moras i da ih postavis u samom Cipher-u.


Potpis
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog
naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji
je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan,
sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv - Z.Đinđić
Re: AES enkripcija i dekripcija 26.12.2008. u 19:30 · pre 217 meseci #5
Zahvaljujem na preporuci da Cipher -a inicijaliziran sa kljucem i vektorom uspjelo je

Kad sam vec ovdje moze jos jedno pitanje ... Trebao bi hash poruke kriptirati sa privatnim kljucem posiljatelja te da primatelj poruke dekriptira sa javnim kljucem posiljatelja ... koliko ja znan to se moze napravit medutim nemi prilikom dekriptiranja javi exception bad key
Postoji li koji nacin kako postic da se poruka kriptira sa privatnim a dekriptira javnim kljucem

Pozdrav
Re: AES enkripcija i dekripcija 26.12.2008. u 20:32 · pre 217 meseci #6
asimetricni crypto algoritmi su spori i za njih uvek generalno postoji bojazan od crypto analize dugackih ciphertext-ova pa je generalna preporuka da se asimetricnim kljucevima ne kriptuje nista sto je duze od samog kljuca, tj ako ti je RSA kljuc 1024 bita nemoj sa njim kriptovati nista duze od 1024 bita.

E sad, nisam bas siguran sta podrazumevas pod hash-om posto vodimo vise paralelnih rasprava, ovo sto si radio sa AES-om nije HASH, hash je rezultat nekog digest algoritma, npr md5, sha-1, sha-2, itd. To je veoma kratak blob do 512 bita koji onda kriptujes RSA kljucem posaljioca. Dekriptovanjem javnim kljucem posaljioca dobijas nazad hash vrednost i onaj koji proverava mora takodje da uradi digest poruke i da sracuna svoj hash istim algoritmom i poruka je autenticna i nepromenjena ako su hashovi isti. Imas ovde sa whackypedie sliku:

http://en.wikipedia.org/wiki/File:Digital_Signature_diagram.svg

U kom trenutku ti dobijas bad key i daj neki sors.
Potpis
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog
naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji
je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan,
sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv - Z.Đinđić
Re: AES enkripcija i dekripcija 26.12.2008. u 20:37 · pre 217 meseci #7
E i da, u kucnoj varijanti neces moci da implementiras sve aspekte digitalnog potpisa koje trazis, tj. neces moci da garantujes neporecivost a i autenticnost ti je klimava, za to ti je potreban certificate authority koji naravno nemas. Eventualno mozes ti da progalsis sebe za skloskog CA i da izdajes x509 sertifikate "korisnicima". X509 sertifikat ti je vazan deo ne samo zbog fizicke provere identiteta pri sertifikaciji vec i zbog identity polja u x509 sertifikatu (tj ako je poruka dosla od "Pere" onda x509 sertifikat mora da glasi na Peru). I najvaznija stvar naravno je da ti ne drzis privatne kljuceve u bazi :), time si u potpunosti iskljucio neporecivost jer svako sa pristupom bazi moze da dodje do privatnog kljuca.
Potpis
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog
naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji
je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan,
sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv - Z.Đinđić
Re: AES enkripcija i dekripcija 26.12.2008. u 22:45 · pre 217 meseci #8
Pa da fala bogu da ne mogu garantirat neporecivost i ostalo jer neam certifikata medutim ovo je samo jedan projekt u sklopu jednog kolegija i baza mi glumi certifikat za dodjelu kljuceva i informacija o korisnicima ... sto se tice toga da asimetricni algoritmi su spori u potpunosti se slazem i naravno da s rsa ne kriptiram cijelu poruku vec 20 znakova sha-1 hash-a te iste poruke ... taj hash kriptiram tajnim kljucem posiljatelja te on posalje kriptiran hash i naravno digitalnu omotnicu u kojoj se nalazi kriptirana poruka nekim generiranim simetricnim kljicem . Hash poruke primatelj mora dekriptirat javnim kljucem onoga ko je posla te mi tu nastaje problem tj. ne mogu da dekriptiran taj hash jer izbaci navedeni exception... ne znam u cemu je problem jer sam procita da su javni i privatni kljucevi ekvivalentni tj. da se moze kriptirat tajnim te dekriptirat javnim i obratno samo meni ne ide prilikom dekripcije javnim kljucem

Nadam se da ste me razumjeli
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme