Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi RSA verschlüsselung (https://www.delphipraxis.net/50082-rsa-verschluesselung.html)

NicNacMan 20. Jul 2005 13:55


RSA verschlüsselung
 
hi,

ich suche eine function/komponente, mit der ich eine zahl mit rsa verschlüsseln kann.
ich hab schon mehrere komponenten gefunden und ausprobiert,
aber die waren alle zu komplex, oder funktionierten nicht.
ich hab schon public keys, brauche also nichts, um gültige keys zu generieren.

kennt ja jemand was?
thx schonmal

Olli 20. Jul 2005 14:03

Re: RSA verschlüsselung
 
Hagen fragen!

... oder nach DEC suchen ;)

NicNacMan 20. Jul 2005 15:29

Re: RSA verschlüsselung
 
hab mir das DEC runter geladen, aber nichts mit rsa gefunden. :gruebel:
oder ist das da nur unter nem anderen namen enthalten (habs nicht so mit verschlüsselungen)?

thx nicnacman

Phistev 20. Jul 2005 15:45

Re: RSA verschlüsselung
 
Soweit ich weiß, sind beim DEC auch Funktionen zum Rechnen mit großen Zahlen dabei. Damit kann man sich die RSA-Verschlüsselung selber bauen

NicNacMan 20. Jul 2005 15:52

Re: RSA verschlüsselung
 
jo, aber da hab ich sonst auch schon welche (u.a. von den kompos, die ich schon ausprobiert hab).
das problem ist bei mir aber, dass ich nicht so die ahnung von rsa hab.
ich weiß zwar inzwischen, wie das funzt, aber immer wenn ich das mal selbst probiert hab, kam was anderes raus^^

generic 20. Jul 2005 16:01

Re: RSA verschlüsselung
 
turbopower bei sf suchen...

http://sourceforge.net/projects/tplockbox/

NicNacMan 20. Jul 2005 16:04

Re: RSA verschlüsselung
 
thx, lockbox hatte ich schon probiert.
ich habs aber nicht hinbekommen, meinen eigenen key verwenden zu können,
er hat immer welche generiert.

edit: habts mit den beispielen, und der hilfe versucht, aber nichts darüber gefunden.
gibt es vll noch weitere beispiele mit turbopower?

Jan 20. Jul 2005 16:06

Re: RSA verschlüsselung
 
Also wenn du die Keys schon hast (3 Werte) dann ist das ganz einfach...

erstmal die RSA Verschlüsselung als Java-Programm:

Code:
import java.math.BigInteger;
import java.util.Random;
public class RSA {
   private BigInteger n,e,d;
   private int pubkey, privkey;
   RSA(){
      BigInteger p = BigInteger.probablePrime(512, new Random());
      BigInteger q = BigInteger.probablePrime(512, new Random());
      n=p.multiply(q);
      BigInteger f = p.multiply(q).subtract(p).subtract(q).add(BigInteger.ONE);
      e=new BigInteger("3");
      while(f.gcd(e).doubleValue()!=1.0)
         e=new BigInteger(String.valueOf(prim(e.intValue()+1)));
      d=e.modInverse(f);
   }

   public BigInteger encode(BigInteger t){
      return t.modPow(e,n);
   
   }
   
   public BigInteger decode(BigInteger c){
      return c.modPow(d,n);
   }

      private int prim(int a) {
         boolean isprim=true;
         for(int i=a;i<10000;i++){
            for(int j=2;j<i;j++){
               if(i%j==0)
                  isprim=false;
            }
            if(isprim)
               return i;
            isprim=true;
         }
         return 0;
      }
}
vielleicht kannst du da was mit anfangen.

Anosnten musst du nur wissen, dass zur verschlüsselung von werten mit dem RSA-public key du nichts anderes machen musst
als deinen Wert mit E potenzieren und MOD N nehmen musst. Welches davon die werte sind, die du brauchst, musst du wissen, du hast ja die Schlüssel.
Zum entschlüsseln das gleiche allerdings mit dem privaten Teil des Schlüssels D.
also:

X (zu entschlüsselnder Wert) mit D potenzieren und MOD N nehmen.

Das wars.

Gruß
Jan

NicNacMan 20. Jul 2005 16:23

Re: RSA verschlüsselung
 
erstmal danke für den code.
muss gleich mal sehen wie ich den gebrauchen kann.

also die public keys sind:
N = 26967259745684484909271072928592253020339168682042 2133286759
e = 5456431

wenn ich jetzt als code c z.b. 123456 nehme,
dann müsste ich ja c^e mod N rechnen, oder?

ich werds mal probieren, sonst komm ich wieder^^
thx soweit

negaH 20. Jul 2005 20:47

Re: RSA verschlüsselung
 
Im offiziellen DEC sind keine asymmetrischen Algos enthalten, ich habe aber hier http://www.delphipraxis.net/internal...ct.php?t=14699 meinen inoffiziellen Part II des DEC gepostet.
Damit kannst du schon mal mit sehr großen Zahlen rechnen. Du lädst dir dort deine benötigte Version runter -> D5,D6 oder D7.

Um nun mit deinem Beispiel zu rechnen erweiterst du folgendes im Test Projekt

Delphi-Quellcode:

unit TestUnit;

interface

uses Windows, ConsoleForm.....;

implementation

.....blabla

procedure TestRSA;
var
  N,E,M,C: IInteger;
begin
// Zuweisungen
  NSet(N, '269672597456844849092710729285922530203391686820422133286759');
  NSet(E, '5456431');
  NSet(M, 123456);

// modular Potenzieren
  NPowMod(C, M, E, N); // C = M^E mod N -> CipherText = Message^Exponent mod Modulus

// Ausgabe
  WriteLn('N: ', NStr(N));
  WriteLn('E: ', NStr(E));
  WriteLn('M: ', NStr(M));
  WriteLn('C: ', NStr(C));
end;


initialization
  RegisterProc('\Test\RSA', '', TestRSA, vk_F8);

....blabla
end.
dann kompilierst du das Projekt, startest das Projekt und drückst F8, in der Console sollten dann deine Ausgaben stehen.

Gruß Hagen


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:34 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz