Salut
Et le cryptage que je fais ci-dessous est-il plus fiable ?
Et du coup de quel type de cryptage s'agit-il ?
Merci
*********************************************
Function Cryptage(strCrypt As String) As String
Dim a&, i&
For i = 1 To Len(strCrypt)
a = Asc(Mid(strCrypt, i, 1)) * 128
Cryptage = Cryptage & "-" & Int(((a + 127) - a + 1) * Rnd + a)
Next
End Function
Function DeCryptage(strCrypt As String) As String
Dim i&, j&
i = InStr(1, strCrypt, "-")
Do While i > 0
j = InStr(i + 1, strCrypt, "-")
If j <> 0 Then
DeCryptage = DeCryptage & Chr(Int(Mid(strCrypt, i + 1, j - i -
1) / 128))
Else
DeCryptage = DeCryptage & Chr(Int(Mid(strCrypt, i + 1) / 128))
End If
i = InStr(i + 1, strCrypt, "-")
Loop
End Function
*********************************************
--
@+
Jessy Sempere - Access MVP
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Michel Walsh" a écrit dans le
message
news:Salut,
C'est mieux que du XOR, mais c'est quand même du "ESARINTULO", une
des
premières techniques utilisées pour essayer de décoder du texte. En
effet,
dans un texte où on soupçonne un codage un à un (à la Jules César, ou
autrement), la lettre e étant prédominante, après les espaces blancs,
son
code sera très probablement celui qui apparaît le plus souvent. Et plus
le
texte est long, plus la statistique a des chances d'être vérifiée.
Ensuite,on regarde le code qui revient le plus fréquemment en second,
probablement
un s, en clair, et ainsi de suite, un a, un r... si il y a échec, on
peut
intervertir le a et le r, ... même que ce texte-ci, le t arrive avant le
s,pas beaucoup de pluriels, et le r, manque de verbes à l'infinitif...mais
dans tous les cas, craquer le code est simple, et rapide, pour qui le
désireréellement, si c'est du texte. Dans ton cas, le message est trop court,
évidemment, mais que chaque "nombre" soit un multiple de trois est un
autreproblème... ajouter, aléatoirement, 0, 1 ou 2 au résultat aurait
brouillé
l'ésarintulo un petit peu, chaque lettre ayant maintenant trois codes,
et
aurait caché la méchante multiplicité par 3 qui actuellement "donne"
quasiment l'algorithme de codage. Tu n'aurais, au décodage, qu'à
simplementchanger les / par des et le tour est joué... mais demeure que la
qualitéest bien en deça, quand même, du codage fourni par Jet (qui possède, de
plus, certains autres avantages, lors de recherche de données, etc. ) et
defaçon transparente à celui qui utilisera la base de données... car le
codageesarintulo nécessite de communiquer la clé de décodage à tout et à
chacun,
des développeurs, autre sérieux problème de sécurité, à long terme. Car
comment changer la clé si l' "ennemie" vient à connaître le décodage,
par
exemple? On peut essayer de ré-inventer la roue, mais bien souvent, on
s'y
fait prendre... La technique utilisée par Jet est ... baveuse. On
connaît
laméthodologie utilisée... elle est publique... mais elle est tellement
onéreuse à craquer, par la méthode brute, quand on ne connaît pas la clé
dedépart (même sur seulement 32 bits) qu'il faudrait plusieurs années à la
NASA (budget et capacité de calculs) pour y parvernir. On est loin du
XOR
utilisé pas MS Word 98.
Vanderghast, Access MVP
"Jessy Sempere [MVP]" wrote in message
news:btudig$apk$Bonjour
Voici un type tout bête de cryptage qui peut-être utiliser :
Voilà ce que peut donner un cryptage :
-198-333-330-318-333-351-342
Il te suffit de faire :
Decrypte "-198-333-330-318-333-351-342"
pour voir ce que ça veut dire...
************************************************
Function Crypte(strCrypt As String) As String
Dim i%
For i = 1 To Len(strCrypt)
Crypte = Crypte & "-" & Asc(Mid(strCrypt, i, 1)) * 3
Next
End Function
Function Decrypte(strCrypt As String) As String
Dim i%, j%
i = InStr(1, strCrypt, "-")
Do While i > 0
j = InStr(i + 1, strCrypt, "-")
If j <> 0 Then
Decrypte = Decrypte & Chr(Mid(strCrypt, i + 1, j - i - 1)
/
3)Else
Decrypte = Decrypte & Chr(Mid(strCrypt, i + 1) / 3)
End If
i = InStr(i + 1, strCrypt, "-")
Loop
End Function
************************************************
--
@+
Jessy Sempere - Access MVP
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"phil" a écrit dans le message
news:0a3201c3d91b$7cc5d470$
Il est toujours possible, en VBA, de créer un algorithme
de cryptage pour coder toute donnée saisie : on
n'enregistrera dans les tables que des données codées. Un
autre algorithme permettra de décoder ces données.
Ainsi, en parcourant les tables, on ne peut rien
comprendre.
J'ai répondu à la question ou je suis complètement à côté ?-----Message d'origine-----
Comment peut-on crypter des données dans access pour
éviter que des administrateurs techniques puissent y
avoir accès en clair ?
.
Salut
Et le cryptage que je fais ci-dessous est-il plus fiable ?
Et du coup de quel type de cryptage s'agit-il ?
Merci
*********************************************
Function Cryptage(strCrypt As String) As String
Dim a&, i&
For i = 1 To Len(strCrypt)
a = Asc(Mid(strCrypt, i, 1)) * 128
Cryptage = Cryptage & "-" & Int(((a + 127) - a + 1) * Rnd + a)
Next
End Function
Function DeCryptage(strCrypt As String) As String
Dim i&, j&
i = InStr(1, strCrypt, "-")
Do While i > 0
j = InStr(i + 1, strCrypt, "-")
If j <> 0 Then
DeCryptage = DeCryptage & Chr(Int(Mid(strCrypt, i + 1, j - i -
1) / 128))
Else
DeCryptage = DeCryptage & Chr(Int(Mid(strCrypt, i + 1) / 128))
End If
i = InStr(i + 1, strCrypt, "-")
Loop
End Function
*********************************************
--
@+
Jessy Sempere - Access MVP
news@access.fr.vu
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Michel Walsh" <vanderghast@VirusAreFunnierThanSpam> a écrit dans le
message
news: eS56diV2DHA.484@TK2MSFTNGP10.phx.gbl...
Salut,
C'est mieux que du XOR, mais c'est quand même du "ESARINTULO", une
des
premières techniques utilisées pour essayer de décoder du texte. En
effet,
dans un texte où on soupçonne un codage un à un (à la Jules César, ou
autrement), la lettre e étant prédominante, après les espaces blancs,
son
code sera très probablement celui qui apparaît le plus souvent. Et plus
le
texte est long, plus la statistique a des chances d'être vérifiée.
Ensuite,
on regarde le code qui revient le plus fréquemment en second,
probablement
un s, en clair, et ainsi de suite, un a, un r... si il y a échec, on
peut
intervertir le a et le r, ... même que ce texte-ci, le t arrive avant le
s,
pas beaucoup de pluriels, et le r, manque de verbes à l'infinitif...mais
dans tous les cas, craquer le code est simple, et rapide, pour qui le
désire
réellement, si c'est du texte. Dans ton cas, le message est trop court,
évidemment, mais que chaque "nombre" soit un multiple de trois est un
autre
problème... ajouter, aléatoirement, 0, 1 ou 2 au résultat aurait
brouillé
l'ésarintulo un petit peu, chaque lettre ayant maintenant trois codes,
et
aurait caché la méchante multiplicité par 3 qui actuellement "donne"
quasiment l'algorithme de codage. Tu n'aurais, au décodage, qu'à
simplement
changer les / par des et le tour est joué... mais demeure que la
qualité
est bien en deça, quand même, du codage fourni par Jet (qui possède, de
plus, certains autres avantages, lors de recherche de données, etc. ) et
de
façon transparente à celui qui utilisera la base de données... car le
codage
esarintulo nécessite de communiquer la clé de décodage à tout et à
chacun,
des développeurs, autre sérieux problème de sécurité, à long terme. Car
comment changer la clé si l' "ennemie" vient à connaître le décodage,
par
exemple? On peut essayer de ré-inventer la roue, mais bien souvent, on
s'y
fait prendre... La technique utilisée par Jet est ... baveuse. On
connaît
la
méthodologie utilisée... elle est publique... mais elle est tellement
onéreuse à craquer, par la méthode brute, quand on ne connaît pas la clé
de
départ (même sur seulement 32 bits) qu'il faudrait plusieurs années à la
NASA (budget et capacité de calculs) pour y parvernir. On est loin du
XOR
utilisé pas MS Word 98.
Vanderghast, Access MVP
"Jessy Sempere [MVP]" <jessy.sempere@prg.sncf.fr> wrote in message
news:btudig$apk$1@muguet.sncf.fr...
Bonjour
Voici un type tout bête de cryptage qui peut-être utiliser :
Voilà ce que peut donner un cryptage :
-198-333-330-318-333-351-342
Il te suffit de faire :
Decrypte "-198-333-330-318-333-351-342"
pour voir ce que ça veut dire...
************************************************
Function Crypte(strCrypt As String) As String
Dim i%
For i = 1 To Len(strCrypt)
Crypte = Crypte & "-" & Asc(Mid(strCrypt, i, 1)) * 3
Next
End Function
Function Decrypte(strCrypt As String) As String
Dim i%, j%
i = InStr(1, strCrypt, "-")
Do While i > 0
j = InStr(i + 1, strCrypt, "-")
If j <> 0 Then
Decrypte = Decrypte & Chr(Mid(strCrypt, i + 1, j - i - 1)
/
3)
Else
Decrypte = Decrypte & Chr(Mid(strCrypt, i + 1) / 3)
End If
i = InStr(i + 1, strCrypt, "-")
Loop
End Function
************************************************
--
@+
Jessy Sempere - Access MVP
news@access.fr.vu
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"phil" <anonymous@discussions.microsoft.com> a écrit dans le message
news:
0a3201c3d91b$7cc5d470$a301280a@phx.gbl...
Il est toujours possible, en VBA, de créer un algorithme
de cryptage pour coder toute donnée saisie : on
n'enregistrera dans les tables que des données codées. Un
autre algorithme permettra de décoder ces données.
Ainsi, en parcourant les tables, on ne peut rien
comprendre.
J'ai répondu à la question ou je suis complètement à côté ?
-----Message d'origine-----
Comment peut-on crypter des données dans access pour
éviter que des administrateurs techniques puissent y
avoir accès en clair ?
.
Salut
Et le cryptage que je fais ci-dessous est-il plus fiable ?
Et du coup de quel type de cryptage s'agit-il ?
Merci
*********************************************
Function Cryptage(strCrypt As String) As String
Dim a&, i&
For i = 1 To Len(strCrypt)
a = Asc(Mid(strCrypt, i, 1)) * 128
Cryptage = Cryptage & "-" & Int(((a + 127) - a + 1) * Rnd + a)
Next
End Function
Function DeCryptage(strCrypt As String) As String
Dim i&, j&
i = InStr(1, strCrypt, "-")
Do While i > 0
j = InStr(i + 1, strCrypt, "-")
If j <> 0 Then
DeCryptage = DeCryptage & Chr(Int(Mid(strCrypt, i + 1, j - i -
1) / 128))
Else
DeCryptage = DeCryptage & Chr(Int(Mid(strCrypt, i + 1) / 128))
End If
i = InStr(i + 1, strCrypt, "-")
Loop
End Function
*********************************************
--
@+
Jessy Sempere - Access MVP
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Michel Walsh" a écrit dans le
message
news:Salut,
C'est mieux que du XOR, mais c'est quand même du "ESARINTULO", une
des
premières techniques utilisées pour essayer de décoder du texte. En
effet,
dans un texte où on soupçonne un codage un à un (à la Jules César, ou
autrement), la lettre e étant prédominante, après les espaces blancs,
son
code sera très probablement celui qui apparaît le plus souvent. Et plus
le
texte est long, plus la statistique a des chances d'être vérifiée.
Ensuite,on regarde le code qui revient le plus fréquemment en second,
probablement
un s, en clair, et ainsi de suite, un a, un r... si il y a échec, on
peut
intervertir le a et le r, ... même que ce texte-ci, le t arrive avant le
s,pas beaucoup de pluriels, et le r, manque de verbes à l'infinitif...mais
dans tous les cas, craquer le code est simple, et rapide, pour qui le
désireréellement, si c'est du texte. Dans ton cas, le message est trop court,
évidemment, mais que chaque "nombre" soit un multiple de trois est un
autreproblème... ajouter, aléatoirement, 0, 1 ou 2 au résultat aurait
brouillé
l'ésarintulo un petit peu, chaque lettre ayant maintenant trois codes,
et
aurait caché la méchante multiplicité par 3 qui actuellement "donne"
quasiment l'algorithme de codage. Tu n'aurais, au décodage, qu'à
simplementchanger les / par des et le tour est joué... mais demeure que la
qualitéest bien en deça, quand même, du codage fourni par Jet (qui possède, de
plus, certains autres avantages, lors de recherche de données, etc. ) et
defaçon transparente à celui qui utilisera la base de données... car le
codageesarintulo nécessite de communiquer la clé de décodage à tout et à
chacun,
des développeurs, autre sérieux problème de sécurité, à long terme. Car
comment changer la clé si l' "ennemie" vient à connaître le décodage,
par
exemple? On peut essayer de ré-inventer la roue, mais bien souvent, on
s'y
fait prendre... La technique utilisée par Jet est ... baveuse. On
connaît
laméthodologie utilisée... elle est publique... mais elle est tellement
onéreuse à craquer, par la méthode brute, quand on ne connaît pas la clé
dedépart (même sur seulement 32 bits) qu'il faudrait plusieurs années à la
NASA (budget et capacité de calculs) pour y parvernir. On est loin du
XOR
utilisé pas MS Word 98.
Vanderghast, Access MVP
"Jessy Sempere [MVP]" wrote in message
news:btudig$apk$Bonjour
Voici un type tout bête de cryptage qui peut-être utiliser :
Voilà ce que peut donner un cryptage :
-198-333-330-318-333-351-342
Il te suffit de faire :
Decrypte "-198-333-330-318-333-351-342"
pour voir ce que ça veut dire...
************************************************
Function Crypte(strCrypt As String) As String
Dim i%
For i = 1 To Len(strCrypt)
Crypte = Crypte & "-" & Asc(Mid(strCrypt, i, 1)) * 3
Next
End Function
Function Decrypte(strCrypt As String) As String
Dim i%, j%
i = InStr(1, strCrypt, "-")
Do While i > 0
j = InStr(i + 1, strCrypt, "-")
If j <> 0 Then
Decrypte = Decrypte & Chr(Mid(strCrypt, i + 1, j - i - 1)
/
3)Else
Decrypte = Decrypte & Chr(Mid(strCrypt, i + 1) / 3)
End If
i = InStr(i + 1, strCrypt, "-")
Loop
End Function
************************************************
--
@+
Jessy Sempere - Access MVP
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"phil" a écrit dans le message
news:0a3201c3d91b$7cc5d470$
Il est toujours possible, en VBA, de créer un algorithme
de cryptage pour coder toute donnée saisie : on
n'enregistrera dans les tables que des données codées. Un
autre algorithme permettra de décoder ces données.
Ainsi, en parcourant les tables, on ne peut rien
comprendre.
J'ai répondu à la question ou je suis complètement à côté ?-----Message d'origine-----
Comment peut-on crypter des données dans access pour
éviter que des administrateurs techniques puissent y
avoir accès en clair ?
.
En effet, 128x est un "shift", un déplacement vers
la droite de l'octet x, de 8 bits, et la partie entière de 128u rempli la
partie "shifté" par du bruit.
Salut,
si x est Asc(Mid(strCrypt, i, 1)
alors a = 128x ( notation algébrique)
et le codage est la partie entière de:
(( 128x + 127) -128x + 1)*u + 128x
où u est un nombre aléatoire entre 0 et 1 ( 0 inclus, 1 exclus). Or,
si
je développe algébriquement:
= ( 128x + 127 - 128x + 1) *u + 128x
= 128u + 128x
= 128(u+x)
C'est donc du codage sur le principe de "lire un octet, ne rien foutre
avec
le second", ou encore, de la même famille que lire un caractère, sauter
le(s) n prochains, ... En effet, 128x est un "shift", un déplacement
vers
la droite de l'octet x, de 8 bits, et la partie entière de 128u rempli la
partie "shifté" par du bruit.
Espérant ne pas être trop ...démoralisant... :-)
Vanderghast, Access MVP
En effet, 128x est un "shift", un déplacement vers
la droite de l'octet x, de 8 bits, et la partie entière de 128u rempli la
partie "shifté" par du bruit.
Salut,
si x est Asc(Mid(strCrypt, i, 1)
alors a = 128x ( notation algébrique)
et le codage est la partie entière de:
(( 128x + 127) -128x + 1)*u + 128x
où u est un nombre aléatoire entre 0 et 1 ( 0 inclus, 1 exclus). Or,
si
je développe algébriquement:
= ( 128x + 127 - 128x + 1) *u + 128x
= 128u + 128x
= 128(u+x)
C'est donc du codage sur le principe de "lire un octet, ne rien foutre
avec
le second", ou encore, de la même famille que lire un caractère, sauter
le(s) n prochains, ... En effet, 128x est un "shift", un déplacement
vers
la droite de l'octet x, de 8 bits, et la partie entière de 128u rempli la
partie "shifté" par du bruit.
Espérant ne pas être trop ...démoralisant... :-)
Vanderghast, Access MVP
En effet, 128x est un "shift", un déplacement vers
la droite de l'octet x, de 8 bits, et la partie entière de 128u rempli la
partie "shifté" par du bruit.
Salut,
si x est Asc(Mid(strCrypt, i, 1)
alors a = 128x ( notation algébrique)
et le codage est la partie entière de:
(( 128x + 127) -128x + 1)*u + 128x
où u est un nombre aléatoire entre 0 et 1 ( 0 inclus, 1 exclus). Or,
si
je développe algébriquement:
= ( 128x + 127 - 128x + 1) *u + 128x
= 128u + 128x
= 128(u+x)
C'est donc du codage sur le principe de "lire un octet, ne rien foutre
avec
le second", ou encore, de la même famille que lire un caractère, sauter
le(s) n prochains, ... En effet, 128x est un "shift", un déplacement
vers
la droite de l'octet x, de 8 bits, et la partie entière de 128u rempli la
partie "shifté" par du bruit.
Espérant ne pas être trop ...démoralisant... :-)
Vanderghast, Access MVP
Re,
Là tu m'épates... ;-))
J'ai suivi ton raisonnement (bon j'ai lu 3 fois quand même)
et je suis entièrement d'accord avec toi même si je ne l'aurais
pas trouvé tout seul...
Par contre quand est-il de son niveau de sécurité ???
Parce que là tu avais la valeur de x mais si tu ne l'as pas,
il te faut forcément connaître la valeur de u mais comme
celle-ci est impossible à déterminer (elle est aléatoire)
comment faire pour trouver x ???
Surtout qu'en plus j'ai utiliser 128 comme multiple mais
c'est pareil, j'aurais pu utiliser un autre multiple et je ne vois
pas ce qui pourrait permettre de l'identifier ???
Sinon y'a quand même une chose que je n'ai pas compris
dans ton explication, c'est :En effet, 128x est un "shift", un déplacement vers
la droite de l'octet x, de 8 bits, et la partie entière de 128u rempli
la
partie "shifté" par du bruit.
Merci et non tu n'es pas démoralisant, c'est toujours
intéressant d'essayer de comprendre... ;-))
@+
Jessy Sempere - Access MVP
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Michel Walsh" a écrit dans le
message
news:Salut,
si x est Asc(Mid(strCrypt, i, 1)
alors a = 128x ( notation algébrique)
et le codage est la partie entière de:
(( 128x + 127) -128x + 1)*u + 128x
où u est un nombre aléatoire entre 0 et 1 ( 0 inclus, 1 exclus). Or,
sije développe algébriquement:
= ( 128x + 127 - 128x + 1) *u + 128x
= 128u + 128x
= 128(u+x)
C'est donc du codage sur le principe de "lire un octet, ne rien foutre
avecle second", ou encore, de la même famille que lire un caractère, sauter
le(s) n prochains, ... En effet, 128x est un "shift", un déplacement
versla droite de l'octet x, de 8 bits, et la partie entière de 128u rempli
la
partie "shifté" par du bruit.
Espérant ne pas être trop ...démoralisant... :-)
Vanderghast, Access MVP
Re,
Là tu m'épates... ;-))
J'ai suivi ton raisonnement (bon j'ai lu 3 fois quand même)
et je suis entièrement d'accord avec toi même si je ne l'aurais
pas trouvé tout seul...
Par contre quand est-il de son niveau de sécurité ???
Parce que là tu avais la valeur de x mais si tu ne l'as pas,
il te faut forcément connaître la valeur de u mais comme
celle-ci est impossible à déterminer (elle est aléatoire)
comment faire pour trouver x ???
Surtout qu'en plus j'ai utiliser 128 comme multiple mais
c'est pareil, j'aurais pu utiliser un autre multiple et je ne vois
pas ce qui pourrait permettre de l'identifier ???
Sinon y'a quand même une chose que je n'ai pas compris
dans ton explication, c'est :
En effet, 128x est un "shift", un déplacement vers
la droite de l'octet x, de 8 bits, et la partie entière de 128u rempli
la
partie "shifté" par du bruit.
Merci et non tu n'es pas démoralisant, c'est toujours
intéressant d'essayer de comprendre... ;-))
@+
Jessy Sempere - Access MVP
news@access.fr.vu
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Michel Walsh" <vanderghast@VirusAreFunnierThanSpam> a écrit dans le
message
news: u5va6Qe2DHA.2224@TK2MSFTNGP10.phx.gbl...
Salut,
si x est Asc(Mid(strCrypt, i, 1)
alors a = 128x ( notation algébrique)
et le codage est la partie entière de:
(( 128x + 127) -128x + 1)*u + 128x
où u est un nombre aléatoire entre 0 et 1 ( 0 inclus, 1 exclus). Or,
si
je développe algébriquement:
= ( 128x + 127 - 128x + 1) *u + 128x
= 128u + 128x
= 128(u+x)
C'est donc du codage sur le principe de "lire un octet, ne rien foutre
avec
le second", ou encore, de la même famille que lire un caractère, sauter
le(s) n prochains, ... En effet, 128x est un "shift", un déplacement
vers
la droite de l'octet x, de 8 bits, et la partie entière de 128u rempli
la
partie "shifté" par du bruit.
Espérant ne pas être trop ...démoralisant... :-)
Vanderghast, Access MVP
Re,
Là tu m'épates... ;-))
J'ai suivi ton raisonnement (bon j'ai lu 3 fois quand même)
et je suis entièrement d'accord avec toi même si je ne l'aurais
pas trouvé tout seul...
Par contre quand est-il de son niveau de sécurité ???
Parce que là tu avais la valeur de x mais si tu ne l'as pas,
il te faut forcément connaître la valeur de u mais comme
celle-ci est impossible à déterminer (elle est aléatoire)
comment faire pour trouver x ???
Surtout qu'en plus j'ai utiliser 128 comme multiple mais
c'est pareil, j'aurais pu utiliser un autre multiple et je ne vois
pas ce qui pourrait permettre de l'identifier ???
Sinon y'a quand même une chose que je n'ai pas compris
dans ton explication, c'est :En effet, 128x est un "shift", un déplacement vers
la droite de l'octet x, de 8 bits, et la partie entière de 128u rempli
la
partie "shifté" par du bruit.
Merci et non tu n'es pas démoralisant, c'est toujours
intéressant d'essayer de comprendre... ;-))
@+
Jessy Sempere - Access MVP
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Michel Walsh" a écrit dans le
message
news:Salut,
si x est Asc(Mid(strCrypt, i, 1)
alors a = 128x ( notation algébrique)
et le codage est la partie entière de:
(( 128x + 127) -128x + 1)*u + 128x
où u est un nombre aléatoire entre 0 et 1 ( 0 inclus, 1 exclus). Or,
sije développe algébriquement:
= ( 128x + 127 - 128x + 1) *u + 128x
= 128u + 128x
= 128(u+x)
C'est donc du codage sur le principe de "lire un octet, ne rien foutre
avecle second", ou encore, de la même famille que lire un caractère, sauter
le(s) n prochains, ... En effet, 128x est un "shift", un déplacement
versla droite de l'octet x, de 8 bits, et la partie entière de 128u rempli
la
partie "shifté" par du bruit.
Espérant ne pas être trop ...démoralisant... :-)
Vanderghast, Access MVP
Salut,
Je n'ai pas à identifier la valeur alétoire, car un saut simple me
permet de retrouver la séquence de x initiaux... en vertu de la
multiplication. En effet, regardons
x+u
dans ce contexte comme l'ajout d'une portion décimale à x. Ainsi, si x
vaut 63, alors x+u c'est quelque chose comme 63.6512396877. Supposons,
pour
se faciliter la vie, pour illustration, que je multiplie par 100.
J'obtiens
6365 (ne conservant que la partie entière). Puis, j'écris le tout comme
deux nombres de deux chiffres (base 10), j'obtiens: 63 65. Si je répète
ainsi de suite, en suposant que x est toujours entre 0 et 99, j'obtiens,
en
bout de compte, toujours pour illustration, je pars avec 63, 16, 45 et,
après ajout du nombre aléatoire, 63.6512, 16.9902, 45.3434, soit, après
mutiplication par 100, et re-séparation par groupe de deux chiffres (base
10), quelque chose comme:
63 65 16 99 45 34
et je sais alors que, pour décoder, je n'ai qu'à sauter par dessus un
"nombre", une fois sur deux:
63 16 45
ce qui est effectivement le message, en clair! Le bruit, l'effet de Rnd, a
simplement conduit à produire ce que je n'ai pas lu:
65 99 34
Le 128 a le même effet que le 100, sauf qu'on est en base 2 au lieu
d'être en base 10 et on décale de 8 au lieu de deux positions. En fait,
toute multiplication peut être vue comme un décalage, tout comme 100
décale
le point décimal de deux positions. Reprenons avec plus de détails:
100( x+u) avec, disons, xc et x=.651239...
= 100( 63 + .651239... )
si je multiplie avant d'additionner, j'obtiens
= 6300 + 65.1239....
= 6365.1239...
le "bruit", 0.651239..., n'a servi qu'à remplir l'espace laissé libre
occupé par les deux zéros, dans 6300, après avoir multiplié par 100. Ce
n'est qu'une vue de l'esprit, bien sûr, les nombres ne "remplissent" pas
et
il n'y a pas d'espace libre, "en soi", mais c'est simplement intéressant
de
"voir" une multiplication, sous cet aspect. D'ailleurs, on pourrait
"presque" changer l'algorithme de codage en créant une nouvelle chaîne, en
remplissant les popsitions impaires par les lettres du message à coder, et
le positions impaires par n'importe quoi ( en fait, il faudrait avoir un
alphabet numéroté de 0 à 127, au lieu de 0 à 255 pour faire celà à
perfection, mais c'est dans l'esprit). Et comme tout algorithme de
décodage
de ce codage effectue, en soi, la même chose que "sauter par dessus une
valeur sur deux", c'est un codage que je qualifierais de relativement
faible... d'autant plus qu'il est dans un environnement où je peux coder
mes
propres phrases et en observer le résultat obtenu.
Espérant être utile,
Vanderghast, Access MVP
Salut,
Je n'ai pas à identifier la valeur alétoire, car un saut simple me
permet de retrouver la séquence de x initiaux... en vertu de la
multiplication. En effet, regardons
x+u
dans ce contexte comme l'ajout d'une portion décimale à x. Ainsi, si x
vaut 63, alors x+u c'est quelque chose comme 63.6512396877. Supposons,
pour
se faciliter la vie, pour illustration, que je multiplie par 100.
J'obtiens
6365 (ne conservant que la partie entière). Puis, j'écris le tout comme
deux nombres de deux chiffres (base 10), j'obtiens: 63 65. Si je répète
ainsi de suite, en suposant que x est toujours entre 0 et 99, j'obtiens,
en
bout de compte, toujours pour illustration, je pars avec 63, 16, 45 et,
après ajout du nombre aléatoire, 63.6512, 16.9902, 45.3434, soit, après
mutiplication par 100, et re-séparation par groupe de deux chiffres (base
10), quelque chose comme:
63 65 16 99 45 34
et je sais alors que, pour décoder, je n'ai qu'à sauter par dessus un
"nombre", une fois sur deux:
63 16 45
ce qui est effectivement le message, en clair! Le bruit, l'effet de Rnd, a
simplement conduit à produire ce que je n'ai pas lu:
65 99 34
Le 128 a le même effet que le 100, sauf qu'on est en base 2 au lieu
d'être en base 10 et on décale de 8 au lieu de deux positions. En fait,
toute multiplication peut être vue comme un décalage, tout comme 100
décale
le point décimal de deux positions. Reprenons avec plus de détails:
100( x+u) avec, disons, xc et x=.651239...
= 100( 63 + .651239... )
si je multiplie avant d'additionner, j'obtiens
= 6300 + 65.1239....
= 6365.1239...
le "bruit", 0.651239..., n'a servi qu'à remplir l'espace laissé libre
occupé par les deux zéros, dans 6300, après avoir multiplié par 100. Ce
n'est qu'une vue de l'esprit, bien sûr, les nombres ne "remplissent" pas
et
il n'y a pas d'espace libre, "en soi", mais c'est simplement intéressant
de
"voir" une multiplication, sous cet aspect. D'ailleurs, on pourrait
"presque" changer l'algorithme de codage en créant une nouvelle chaîne, en
remplissant les popsitions impaires par les lettres du message à coder, et
le positions impaires par n'importe quoi ( en fait, il faudrait avoir un
alphabet numéroté de 0 à 127, au lieu de 0 à 255 pour faire celà à
perfection, mais c'est dans l'esprit). Et comme tout algorithme de
décodage
de ce codage effectue, en soi, la même chose que "sauter par dessus une
valeur sur deux", c'est un codage que je qualifierais de relativement
faible... d'autant plus qu'il est dans un environnement où je peux coder
mes
propres phrases et en observer le résultat obtenu.
Espérant être utile,
Vanderghast, Access MVP
Salut,
Je n'ai pas à identifier la valeur alétoire, car un saut simple me
permet de retrouver la séquence de x initiaux... en vertu de la
multiplication. En effet, regardons
x+u
dans ce contexte comme l'ajout d'une portion décimale à x. Ainsi, si x
vaut 63, alors x+u c'est quelque chose comme 63.6512396877. Supposons,
pour
se faciliter la vie, pour illustration, que je multiplie par 100.
J'obtiens
6365 (ne conservant que la partie entière). Puis, j'écris le tout comme
deux nombres de deux chiffres (base 10), j'obtiens: 63 65. Si je répète
ainsi de suite, en suposant que x est toujours entre 0 et 99, j'obtiens,
en
bout de compte, toujours pour illustration, je pars avec 63, 16, 45 et,
après ajout du nombre aléatoire, 63.6512, 16.9902, 45.3434, soit, après
mutiplication par 100, et re-séparation par groupe de deux chiffres (base
10), quelque chose comme:
63 65 16 99 45 34
et je sais alors que, pour décoder, je n'ai qu'à sauter par dessus un
"nombre", une fois sur deux:
63 16 45
ce qui est effectivement le message, en clair! Le bruit, l'effet de Rnd, a
simplement conduit à produire ce que je n'ai pas lu:
65 99 34
Le 128 a le même effet que le 100, sauf qu'on est en base 2 au lieu
d'être en base 10 et on décale de 8 au lieu de deux positions. En fait,
toute multiplication peut être vue comme un décalage, tout comme 100
décale
le point décimal de deux positions. Reprenons avec plus de détails:
100( x+u) avec, disons, xc et x=.651239...
= 100( 63 + .651239... )
si je multiplie avant d'additionner, j'obtiens
= 6300 + 65.1239....
= 6365.1239...
le "bruit", 0.651239..., n'a servi qu'à remplir l'espace laissé libre
occupé par les deux zéros, dans 6300, après avoir multiplié par 100. Ce
n'est qu'une vue de l'esprit, bien sûr, les nombres ne "remplissent" pas
et
il n'y a pas d'espace libre, "en soi", mais c'est simplement intéressant
de
"voir" une multiplication, sous cet aspect. D'ailleurs, on pourrait
"presque" changer l'algorithme de codage en créant une nouvelle chaîne, en
remplissant les popsitions impaires par les lettres du message à coder, et
le positions impaires par n'importe quoi ( en fait, il faudrait avoir un
alphabet numéroté de 0 à 127, au lieu de 0 à 255 pour faire celà à
perfection, mais c'est dans l'esprit). Et comme tout algorithme de
décodage
de ce codage effectue, en soi, la même chose que "sauter par dessus une
valeur sur deux", c'est un codage que je qualifierais de relativement
faible... d'autant plus qu'il est dans un environnement où je peux coder
mes
propres phrases et en observer le résultat obtenu.
Espérant être utile,
Vanderghast, Access MVP
Oui je te suis mais je suis perplex...
Tu semble dire que la partie aléatoire de l'algorythme remplie
un espace vide mais dans mon cas, l'espace vide est difficile à
déterminer.
Exemple pour le codage de la lettre "a"
Mon algo peut donner une valeur entre :
12416 et 12543
Donc si tu ne sais pas que la clé est 128, comment connais-tu
les valeurs à ignorer...
Effectivement si tu peux toi même encoder pour faire des tests,
tu vas bien finir par trouver mais si tu as par exemple :
-12550-14283-14139-13606-14287-15058-14625
ou alors -12579-14314-14185-13643-14334-15092-14621
ou alors -12632-14333-14111-13636-14221-15103-14678
comment peux-tu savoir que ces 3 codes veulent tous dire :
bonjour
--
@+
Jessy Sempere - Access MVP
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Michel Walsh" a écrit dans le
message
news: OIr6#Salut,
Je n'ai pas à identifier la valeur alétoire, car un saut simple me
permet de retrouver la séquence de x initiaux... en vertu de la
multiplication. En effet, regardons
x+u
dans ce contexte comme l'ajout d'une portion décimale à x. Ainsi, si
x
vaut 63, alors x+u c'est quelque chose comme 63.6512396877. Supposons,
pourse faciliter la vie, pour illustration, que je multiplie par 100.
J'obtiens6365 (ne conservant que la partie entière). Puis, j'écris le tout comme
deux nombres de deux chiffres (base 10), j'obtiens: 63 65. Si je
répète
ainsi de suite, en suposant que x est toujours entre 0 et 99, j'obtiens,
enbout de compte, toujours pour illustration, je pars avec 63, 16, 45 et,
après ajout du nombre aléatoire, 63.6512, 16.9902, 45.3434, soit, après
mutiplication par 100, et re-séparation par groupe de deux chiffres
(base
10), quelque chose comme:
63 65 16 99 45 34
et je sais alors que, pour décoder, je n'ai qu'à sauter par dessus un
"nombre", une fois sur deux:
63 16 45
ce qui est effectivement le message, en clair! Le bruit, l'effet de Rnd,
a
simplement conduit à produire ce que je n'ai pas lu:
65 99 34
Le 128 a le même effet que le 100, sauf qu'on est en base 2 au lieu
d'être en base 10 et on décale de 8 au lieu de deux positions. En fait,
toute multiplication peut être vue comme un décalage, tout comme 100
décalele point décimal de deux positions. Reprenons avec plus de détails:
100( x+u) avec, disons, xc et x=.651239...
= 100( 63 + .651239... )
si je multiplie avant d'additionner, j'obtiens
= 6300 + 65.1239....
= 6365.1239...
le "bruit", 0.651239..., n'a servi qu'à remplir l'espace laissé libre
occupé par les deux zéros, dans 6300, après avoir multiplié par 100. Ce
n'est qu'une vue de l'esprit, bien sûr, les nombres ne "remplissent" pas
etil n'y a pas d'espace libre, "en soi", mais c'est simplement intéressant
de"voir" une multiplication, sous cet aspect. D'ailleurs, on pourrait
"presque" changer l'algorithme de codage en créant une nouvelle chaîne,
en
remplissant les popsitions impaires par les lettres du message à coder,
et
le positions impaires par n'importe quoi ( en fait, il faudrait avoir un
alphabet numéroté de 0 à 127, au lieu de 0 à 255 pour faire celà à
perfection, mais c'est dans l'esprit). Et comme tout algorithme de
décodagede ce codage effectue, en soi, la même chose que "sauter par dessus une
valeur sur deux", c'est un codage que je qualifierais de relativement
faible... d'autant plus qu'il est dans un environnement où je peux coder
mespropres phrases et en observer le résultat obtenu.
Espérant être utile,
Vanderghast, Access MVP
Oui je te suis mais je suis perplex...
Tu semble dire que la partie aléatoire de l'algorythme remplie
un espace vide mais dans mon cas, l'espace vide est difficile à
déterminer.
Exemple pour le codage de la lettre "a"
Mon algo peut donner une valeur entre :
12416 et 12543
Donc si tu ne sais pas que la clé est 128, comment connais-tu
les valeurs à ignorer...
Effectivement si tu peux toi même encoder pour faire des tests,
tu vas bien finir par trouver mais si tu as par exemple :
-12550-14283-14139-13606-14287-15058-14625
ou alors -12579-14314-14185-13643-14334-15092-14621
ou alors -12632-14333-14111-13636-14221-15103-14678
comment peux-tu savoir que ces 3 codes veulent tous dire :
bonjour
--
@+
Jessy Sempere - Access MVP
news@access.fr.vu
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Michel Walsh" <vanderghast@VirusAreFunnierThanSpam> a écrit dans le
message
news: OIr6#9e2DHA.1700@TK2MSFTNGP12.phx.gbl...
Salut,
Je n'ai pas à identifier la valeur alétoire, car un saut simple me
permet de retrouver la séquence de x initiaux... en vertu de la
multiplication. En effet, regardons
x+u
dans ce contexte comme l'ajout d'une portion décimale à x. Ainsi, si
x
vaut 63, alors x+u c'est quelque chose comme 63.6512396877. Supposons,
pour
se faciliter la vie, pour illustration, que je multiplie par 100.
J'obtiens
6365 (ne conservant que la partie entière). Puis, j'écris le tout comme
deux nombres de deux chiffres (base 10), j'obtiens: 63 65. Si je
répète
ainsi de suite, en suposant que x est toujours entre 0 et 99, j'obtiens,
en
bout de compte, toujours pour illustration, je pars avec 63, 16, 45 et,
après ajout du nombre aléatoire, 63.6512, 16.9902, 45.3434, soit, après
mutiplication par 100, et re-séparation par groupe de deux chiffres
(base
10), quelque chose comme:
63 65 16 99 45 34
et je sais alors que, pour décoder, je n'ai qu'à sauter par dessus un
"nombre", une fois sur deux:
63 16 45
ce qui est effectivement le message, en clair! Le bruit, l'effet de Rnd,
a
simplement conduit à produire ce que je n'ai pas lu:
65 99 34
Le 128 a le même effet que le 100, sauf qu'on est en base 2 au lieu
d'être en base 10 et on décale de 8 au lieu de deux positions. En fait,
toute multiplication peut être vue comme un décalage, tout comme 100
décale
le point décimal de deux positions. Reprenons avec plus de détails:
100( x+u) avec, disons, xc et x=.651239...
= 100( 63 + .651239... )
si je multiplie avant d'additionner, j'obtiens
= 6300 + 65.1239....
= 6365.1239...
le "bruit", 0.651239..., n'a servi qu'à remplir l'espace laissé libre
occupé par les deux zéros, dans 6300, après avoir multiplié par 100. Ce
n'est qu'une vue de l'esprit, bien sûr, les nombres ne "remplissent" pas
et
il n'y a pas d'espace libre, "en soi", mais c'est simplement intéressant
de
"voir" une multiplication, sous cet aspect. D'ailleurs, on pourrait
"presque" changer l'algorithme de codage en créant une nouvelle chaîne,
en
remplissant les popsitions impaires par les lettres du message à coder,
et
le positions impaires par n'importe quoi ( en fait, il faudrait avoir un
alphabet numéroté de 0 à 127, au lieu de 0 à 255 pour faire celà à
perfection, mais c'est dans l'esprit). Et comme tout algorithme de
décodage
de ce codage effectue, en soi, la même chose que "sauter par dessus une
valeur sur deux", c'est un codage que je qualifierais de relativement
faible... d'autant plus qu'il est dans un environnement où je peux coder
mes
propres phrases et en observer le résultat obtenu.
Espérant être utile,
Vanderghast, Access MVP
Oui je te suis mais je suis perplex...
Tu semble dire que la partie aléatoire de l'algorythme remplie
un espace vide mais dans mon cas, l'espace vide est difficile à
déterminer.
Exemple pour le codage de la lettre "a"
Mon algo peut donner une valeur entre :
12416 et 12543
Donc si tu ne sais pas que la clé est 128, comment connais-tu
les valeurs à ignorer...
Effectivement si tu peux toi même encoder pour faire des tests,
tu vas bien finir par trouver mais si tu as par exemple :
-12550-14283-14139-13606-14287-15058-14625
ou alors -12579-14314-14185-13643-14334-15092-14621
ou alors -12632-14333-14111-13636-14221-15103-14678
comment peux-tu savoir que ces 3 codes veulent tous dire :
bonjour
--
@+
Jessy Sempere - Access MVP
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Michel Walsh" a écrit dans le
message
news: OIr6#Salut,
Je n'ai pas à identifier la valeur alétoire, car un saut simple me
permet de retrouver la séquence de x initiaux... en vertu de la
multiplication. En effet, regardons
x+u
dans ce contexte comme l'ajout d'une portion décimale à x. Ainsi, si
x
vaut 63, alors x+u c'est quelque chose comme 63.6512396877. Supposons,
pourse faciliter la vie, pour illustration, que je multiplie par 100.
J'obtiens6365 (ne conservant que la partie entière). Puis, j'écris le tout comme
deux nombres de deux chiffres (base 10), j'obtiens: 63 65. Si je
répète
ainsi de suite, en suposant que x est toujours entre 0 et 99, j'obtiens,
enbout de compte, toujours pour illustration, je pars avec 63, 16, 45 et,
après ajout du nombre aléatoire, 63.6512, 16.9902, 45.3434, soit, après
mutiplication par 100, et re-séparation par groupe de deux chiffres
(base
10), quelque chose comme:
63 65 16 99 45 34
et je sais alors que, pour décoder, je n'ai qu'à sauter par dessus un
"nombre", une fois sur deux:
63 16 45
ce qui est effectivement le message, en clair! Le bruit, l'effet de Rnd,
a
simplement conduit à produire ce que je n'ai pas lu:
65 99 34
Le 128 a le même effet que le 100, sauf qu'on est en base 2 au lieu
d'être en base 10 et on décale de 8 au lieu de deux positions. En fait,
toute multiplication peut être vue comme un décalage, tout comme 100
décalele point décimal de deux positions. Reprenons avec plus de détails:
100( x+u) avec, disons, xc et x=.651239...
= 100( 63 + .651239... )
si je multiplie avant d'additionner, j'obtiens
= 6300 + 65.1239....
= 6365.1239...
le "bruit", 0.651239..., n'a servi qu'à remplir l'espace laissé libre
occupé par les deux zéros, dans 6300, après avoir multiplié par 100. Ce
n'est qu'une vue de l'esprit, bien sûr, les nombres ne "remplissent" pas
etil n'y a pas d'espace libre, "en soi", mais c'est simplement intéressant
de"voir" une multiplication, sous cet aspect. D'ailleurs, on pourrait
"presque" changer l'algorithme de codage en créant une nouvelle chaîne,
en
remplissant les popsitions impaires par les lettres du message à coder,
et
le positions impaires par n'importe quoi ( en fait, il faudrait avoir un
alphabet numéroté de 0 à 127, au lieu de 0 à 255 pour faire celà à
perfection, mais c'est dans l'esprit). Et comme tout algorithme de
décodagede ce codage effectue, en soi, la même chose que "sauter par dessus une
valeur sur deux", c'est un codage que je qualifierais de relativement
faible... d'autant plus qu'il est dans un environnement où je peux coder
mespropres phrases et en observer le résultat obtenu.
Espérant être utile,
Vanderghast, Access MVP
Salut,
Je viens de me rendre compte que certains bloquent
systématiquement
les attachements (et messages avec attachement). Je reposte donc, sans
attachement. Je souligne qu'une conversion binaire (car un bit ne peut
contenir qu'une seule information) et comparaisons subséquentes permettent
de relever immédiatement 'l'arrangement" ceci-est-constant et ceci-varie
de codage en codage, du même message, et on trouve en un rien de temps,
dans
ce cas, que les sept bits mineurs sont aléatoires, d'où l'utilisation
(probable) du facteur multiplicatif 128.
Vanderghast, Access MVP
Salut,
Je viens de me rendre compte que certains bloquent
systématiquement
les attachements (et messages avec attachement). Je reposte donc, sans
attachement. Je souligne qu'une conversion binaire (car un bit ne peut
contenir qu'une seule information) et comparaisons subséquentes permettent
de relever immédiatement 'l'arrangement" ceci-est-constant et ceci-varie
de codage en codage, du même message, et on trouve en un rien de temps,
dans
ce cas, que les sept bits mineurs sont aléatoires, d'où l'utilisation
(probable) du facteur multiplicatif 128.
Vanderghast, Access MVP
Salut,
Je viens de me rendre compte que certains bloquent
systématiquement
les attachements (et messages avec attachement). Je reposte donc, sans
attachement. Je souligne qu'une conversion binaire (car un bit ne peut
contenir qu'une seule information) et comparaisons subséquentes permettent
de relever immédiatement 'l'arrangement" ceci-est-constant et ceci-varie
de codage en codage, du même message, et on trouve en un rien de temps,
dans
ce cas, que les sept bits mineurs sont aléatoires, d'où l'utilisation
(probable) du facteur multiplicatif 128.
Vanderghast, Access MVP