begin process at 2012 02 13 22:57:11
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Sécurité

 > CRYPTAGE/DECRYPTAGE RSA SUR 64 BITS

CRYPTAGE/DECRYPTAGE RSA SUR 64 BITS


 Information sur la source

Note :
9 / 10 - par 11 personnes
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Sécurité Classé sous :cryptage, décryptage, rsa Niveau :Initié Date de création :10/05/2001 Vu / téléchargé :13 338 / 1 274

Auteur : Derrick soft

Ecrire un message privé
Site perso
Commentaire sur cette source (6)
Ajouter un commentaire et/ou une note

 Description

Module de cryptage/decryptage RSA 64 bits avec génération des clés privée/public.

Source

  • Public key(1 To 3) As Double
  • Public p As Double, q As Double
  • Public PHI As Double
  • Public Sub keyGen()
  • Dim E#, D#, N#
  • Const PQ_UP As Integer = 9999
  • Const PQ_LW As Integer = 3170
  • Const KEY_LOWER_LIMIT As Long = 10000000
  • p = 0: q = 0
  • Randomize
  • Do Until D > KEY_LOWER_LIMIT
  • Do Until IsPrime(p) And IsPrime(q)
  • p = Int((PQ_UP - PQ_LW + 1) * Rnd + PQ_LW)
  • q = Int((PQ_UP - PQ_LW + 1) * Rnd + PQ_LW)
  • Loop
  • N = p * q
  • PHI = (p - 1) * (q - 1)
  • E = GCD(PHI)
  • D = Euler(E, PHI)
  • Loop
  • key(1) = E
  • key(2) = D
  • key(3) = N
  • End Sub
  • Private Function Euler(E3 As Double, PHI3 As Double) As Double
  • On Error Resume Next
  • Dim u1#, u2#, u3#, v1#, v2#, v3#, q#
  • Dim t1#, t2#, t3#, z#, uu#, vv#, inverse#
  • u1 = 1
  • u2 = 0
  • u3 = PHI3
  • v1 = 0
  • v2 = 1
  • v3 = E3
  • Do Until (v3 = 0)
  • q = Int(u3 / v3)
  • t1 = u1 - q * v1
  • t2 = u2 - q * v2
  • t3 = u3 - q * v3
  • u1 = v1
  • u2 = v2
  • u3 = v3
  • v1 = t1
  • v2 = t2
  • v3 = t3
  • z = 1
  • Loop
  • uu = u1
  • vv = u2
  • If (vv < 0) Then
  • inverse = vv + PHI3
  • Else
  • inverse = vv
  • End If
  • Euler = inverse
  • End Function
  • Private Function GCD(nPHI As Double) As Double
  • On Error Resume Next
  • Dim nE#, y#
  • Const N_UP = 99999999
  • Const N_LW = 10000000
  • Randomize
  • nE = Int((N_UP - N_LW + 1) * Rnd + N_LW)
  • top:
  • x = nPHI Mod nE
  • y = x Mod nE
  • If y <> 0 And IsPrime(nE) Then
  • GCD = nE
  • Exit Function
  • Else
  • nE = nE + 1
  • End If
  • GoTo top
  • End Function
  • Private Function IsPrime(lngNumber As Double) As Boolean
  • On Error Resume Next
  • Dim lngCount#
  • Dim lngSqr#
  • Dim x#
  • lngSqr = Int(Sqr(lngNumber))
  • If lngNumber < 2 Then
  • IsPrime = False
  • Exit Function
  • End If
  • lngCount = 2
  • IsPrime = True
  • If lngNumber Mod lngCount = 0 Then
  • IsPrime = False
  • Exit Function
  • End If
  • lngCount = 3
  • For x = lngCount To lngSqr Step 2
  • If lngNumber Mod x = 0 Then
  • IsPrime = False
  • Exit Function
  • End If
  • Next
  • End Function
  • Public Function Mult(ByVal x As Double, ByVal p As Double, ByVal m As Double) As Double
  • On Error GoTo error1
  • y = 1
  • Do While p > 0
  • Do While (p / 2) = Int((p / 2))
  • x = nMod((x * x), m)
  • p = p / 2
  • Loop
  • y = nMod((x * y), m)
  • p = p - 1
  • Loop
  • Mult = y
  • Exit Function
  • error1:
  • y = 0
  • End Function
  • Private Function nMod(x As Double, y As Double) As Double
  • On Error Resume Next
  • Dim z#
  • z = x - (Int(x / y) * y)
  • nMod = z
  • End Function
  • Public Function enc(tIp As String, eE As Double, eN As Double) As String
  • On Error Resume Next
  • Dim encSt As String
  • encSt = ""
  • e2st = ""
  • If tIp = "" Then Exit Function
  • For i = 1 To Len(tIp)
  • encSt = encSt & Mult(CLng(Asc(Mid(tIp, i, 1))), eE, eN) & "+"
  • Next i
  • enc = encSt
  • End Function
  • Public Function dec(tIp As String, dD As Double, dN As Double) As String
  • On Error Resume Next
  • Dim decSt As String
  • decSt = ""
  • For z = 1 To Len(tIp)
  • ptr = InStr(z, tIp, "+")
  • tok = Val(Mid(tIp, z, ptr))
  • decSt = decSt + Chr(Mult(tok, dD, dN))
  • z = ptr
  • Next z
  • dec = decSt
  • End Function
Public key(1 To 3) As Double
Public p As Double, q As Double
Public PHI As Double

Public Sub keyGen()

Dim E#, D#, N#
Const PQ_UP As Integer = 9999
Const PQ_LW As Integer = 3170
Const KEY_LOWER_LIMIT As Long = 10000000
p = 0: q = 0

Randomize

Do Until D > KEY_LOWER_LIMIT
Do Until IsPrime(p) And IsPrime(q)
p = Int((PQ_UP - PQ_LW + 1) * Rnd + PQ_LW)
q = Int((PQ_UP - PQ_LW + 1) * Rnd + PQ_LW)
Loop
                
    N = p * q
    PHI = (p - 1) * (q - 1)
    E = GCD(PHI)
    D = Euler(E, PHI)
Loop

        key(1) = E
        key(2) = D
        key(3) = N
                        
End Sub


Private Function Euler(E3 As Double, PHI3 As Double) As Double

On Error Resume Next

Dim u1#, u2#, u3#, v1#, v2#, v3#, q#
Dim t1#, t2#, t3#, z#, uu#, vv#, inverse#

u1 = 1
u2 = 0
u3 = PHI3
v1 = 0
v2 = 1
v3 = E3

Do Until (v3 = 0)
     q = Int(u3 / v3)
     t1 = u1 - q * v1
     t2 = u2 - q * v2
     t3 = u3 - q * v3

     u1 = v1
     u2 = v2
     u3 = v3

     v1 = t1
     v2 = t2
     v3 = t3
     z = 1
Loop
uu = u1
vv = u2

If (vv < 0) Then
          inverse = vv + PHI3
Else
     inverse = vv
End If

Euler = inverse

End Function

Private Function GCD(nPHI As Double) As Double

On Error Resume Next

Dim nE#, y#
Const N_UP = 99999999
Const N_LW = 10000000

Randomize
nE = Int((N_UP - N_LW + 1) * Rnd + N_LW)

top:
    x = nPHI Mod nE
    y = x Mod nE
    If y <> 0 And IsPrime(nE) Then
        GCD = nE
        Exit Function
    Else
        nE = nE + 1
    End If
    
    GoTo top

End Function

Private Function IsPrime(lngNumber As Double) As Boolean
    
On Error Resume Next

Dim lngCount#
Dim lngSqr#
Dim x#
lngSqr = Int(Sqr(lngNumber))


    If lngNumber < 2 Then
        IsPrime = False
        Exit Function
    End If
    lngCount = 2
    IsPrime = True


    If lngNumber Mod lngCount = 0 Then
        IsPrime = False
        Exit Function
    End If
    lngCount = 3


    For x = lngCount To lngSqr Step 2


        If lngNumber Mod x = 0 Then
            IsPrime = False
            Exit Function
        End If
    Next
End Function

Public Function Mult(ByVal x As Double, ByVal p As Double, ByVal m As Double) As Double

On Error GoTo error1
    
y = 1
    
    Do While p > 0


        Do While (p / 2) = Int((p / 2))
            x = nMod((x * x), m)
            p = p / 2
        Loop
        y = nMod((x * y), m)
        p = p - 1
    Loop
    Mult = y
    Exit Function

error1:
y = 0

End Function

Private Function nMod(x As Double, y As Double) As Double

On Error Resume Next

Dim z#

z = x - (Int(x / y) * y)

nMod = z

End Function

Public Function enc(tIp As String, eE As Double, eN As Double) As String

On Error Resume Next

Dim encSt As String
encSt = ""
e2st = ""
    
    If tIp = "" Then Exit Function
    For i = 1 To Len(tIp)
        encSt = encSt & Mult(CLng(Asc(Mid(tIp, i, 1))), eE, eN) & "+"
    Next i

enc = encSt
   
End Function

Public Function dec(tIp As String, dD As Double, dN As Double) As String

On Error Resume Next

Dim decSt As String
decSt = ""

For z = 1 To Len(tIp)
    ptr = InStr(z, tIp, "+")
    tok = Val(Mid(tIp, z, ptr))
    decSt = decSt + Chr(Mult(tok, dD, dN))
    z = ptr
Next z

dec = decSt

End Function
   

 Conclusion

N'oubliez pas de générer les clés !

Lundi 21 Mai ajout d'un projet démo et de l'exécutable.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip Source avec une capture PROGRAMMATION WSOCK32 EN VISUAL BASIC
CRÉER UNE TABLE ET DES CHAMPS DANS UNE BASE ACCESS
QUEL IP ET RÉSOUDRE LES ADRESSES
ÉNUMÉRATION DES COMPTES D'UN DOMAINE NT
EN REMPLACEMENT DE SENDKEYS

 Sources de la même categorie

Source avec Zip Source avec une capture Source .NET (Dotnet) CHIFFREMENT XOR PLUS ROBUSTE par dheroux
Source avec Zip CRYPTAGE MARANT par alpha5
Source avec Zip ACCÈS PAR MOT DE PASSE À FEUILLE EXCEL par mimiZanzan
Source avec Zip CRYPTER-DÉCRYPTER UN TEXTE - TEXTE CRYPTÉ UNIQUEMENT EN MAJ... par Saintache
Source avec Zip Source avec une capture FOLDER PROTECTION par hackoo

 Sources en rapport avec celle ci

Source avec Zip Source .NET (Dotnet) CRYPTAGE DÉCRYPTAGE DE FICHIER PAR MOT DE PASSE par auban
Source avec Zip Source avec une capture CRYPTAGE ET DÉCRYPTAGE DE CHAÎNES ET DE FICHIERS [MODULE DE ... par PCPT
Source avec Zip Source avec une capture CRYPTAGE ET DÉCRYPTAGE DE TEXTE (SIMPLE) par miata
RC4 ENCRYPT/DECRYPT FONCTION par Joke758
Source avec Zip Source avec une capture CHARLIGMA par CHAR As Human

Commentaires et avis

Commentaire de hvb le 11/11/2002 22:24:32

J'ai vu exactement la meme source sur un site, sauf que le message que tu as changé en "Bonjour aux utilisateurs de VBFrance" etait "Hello world"
http://www.tlsecurity.net/cgi-bin/download.cgi?Sourcecode/Vb/64.bit.Rsa.zip
t'aurais pu changer le design lol...

Commentaire de Derrick soft le 11/11/2002 22:39:09

Il est vrai que ce source à été copier sur pas mal de sites.
Mais comme VBFrance est open source je ne vais pas attaquer tous ceux qui copie.
Ce source est une introduction au RSA, su tu vas sur planet-source-code il y en à encore plus.

Commentaire de saiko le 06/01/2004 00:40:10

JE suis un gros Newbie et je voudrai faire marcher ce prog je fais coumment ? ^^

Commentaire de trance_man le 01/05/2007 19:24:42

Est ce qu'il y a quelle qu'un sur ce monde fort on vb qui peut m'aider dans mon projet de fin d'étude. il me reste que 2 semaine et je n'arive pas à avancé au secourt

Commentaire de matovitch le 20/01/2008 19:46:56

Salut !
Si l'algorythme est correct, ce chiffre se contente de substituer une lettre à un chiffre quelque soit sa place dans le texte.
C'est un chiffre monoalphabétique qui ne résisterai pas à une simple analyse de fréquence !?!
Je ne pense pas que les banques utilisent un tel chiffre...

Commentaire de tdt63 le 07/11/2008 11:00:00

Bonjour, l'algorithme a l'air bien, le problème c'est que au cryptage, il case un caractère, donc un octet par variable double, soit 1 octets sur 8 octets. Du coup, ça multiplie la taille de sortie par 8 et ça facilite les attaques puisqu'un caractère est toujours codé de la même façon dans le texte. En utilisant CopyMemory, pour remplir les tampons Double avec 8 octets, ça résoudrait ces deux problèmes, il me semble ?

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

cryptage decryptage RSA cle prive cle publique [ par thierrydelepine ] bonjour,je cherche un code sample sur le cryptage decryptage RSA mais avec de grandes clés.j'ai testé les differentes sources de VBFrance mais les clé Aider-moi (cryptage-décryptage de texte) [ par Quiske ] Salut tlm j'ai un bleme je fais un programme pour crypter et decrypter du texte:j'ai une textbox et 2 bouton je voudrais que en entrant un truc zarb c Cryptage RSA [ par pirate75000 ] Je desirais savoir si la je crypte par la methode RSA une valeur de chaine du type "TOTO" la valeur encripté retourné sera t elle la meme sous un syst comment ajouté un code de cryptage RSA [ par salimkalil ] salut a tt j'ai une  application de transfère de fichier par RS232 bd 9  avec vb 6 mais  je ne sais pas  comment ajouté un code de cryptage RSA pour ê Décryptage dans un dossier Temp [ par gotakk ] Bonjour, je suis débutant en visual basic et je fait un jeu sous frog creator. Mon problème est le suivant : j'ai trouvé une source qui à une fonctio Cryptage TripleDES [ par dheroux ] Bonjour, Je programme sous VB NET 2008. Le cryptage TripleDES s'effectue à l'aide d'une clé de 192 bits (et d'un vecteur) Lorsqu'on génère automatiqu décrypter du RSA [ par petit chat ] Bonjour à toutes et tous, Mon soucis est de mettre au point un algo qui décrypte un message chiffré en RSA. Alors je récapitule, dites moi quand je m Cryptage base de données [ par lionyz ] Bonjour, J'ai créé une base de données DAO avec l'instruction Set Madb = CreateDatabase(NomBase, dbLangGeneral, dbEncrypt) Après plusieure éssais je Problème décryptage [ par lilj ] Bonjour, Voilà, j'utilise la source [url=http://www.vbfrance.com/codes/CRYPTAGE-DECRYPTAGE-FICHIER-AVEC-AES_48385.aspx]ELGAESCRYPT[/url]. Mais en l'u Cherche cryptage de ce fichier [ par viruskail ] Bonjour je recherche le cryptage de ce fichier : http://www.megaupload.com/?d=4HL0DAPM aidez moi svp


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,842 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales