Hallå! Hej, är löpnummret signat till nått speciellt? ex en användare eller en organisation? Det har du ju helt rätt i, men i detta fall är löpnumret ett artikel ID. Varför inte anända slumptal som primärnyckel? Om du använder en Access databas är det ett alternativ. Där är bara att ställa om räknaren till slumptal. Ett bra alternativ är att använda GUID's till ID:n. De eliminerar all logic :) GUID är betydligt större, vilket påverka prestanda vid joins och sökningar med tabellen. Det kräver oxå att kod måste skrivas om att hantera GUID istället för tal. Syftar du på utvecklingkostnad? eller på prestanda kostnad? Jag har fått intryck att access databaser är den vanligast förekommande databasen i detta forum vid asp utveckling. Därför väljer jag att svara utifrån det. Jag tackar för alla svar och ideer. Jag har labborerat lite och kom fram till en helt annan lösning. Jag kollar helt enkelt om den som frågar efter bilden kommer från min site. Tjena Frodin ! :) Det är väl upp till webläsaren att skicka med den. Finns risk att bilderna inte visas.Enkel kryptering
Jag behöver på ett enkelt sätt kryptera en sträng i en QueryString.
Kort exempel:
Värde: 123
Kryptera till: AU4I298LJ (alltså exemepel)
Jag tar emot det och dekrypterar tillbaka till 123.
Jag vill bara kunna kryptera till en sträng som innehåller a-z och/eller 0-9. Inga andra tecken.
I detta fall handlar det _inte_ om känslig information, utan jag vill bara förhindra att någon på ett enkelt sätt kan hämta information baserat på ett löpnummer.
http://www...../minasida.aspx?id=123 kan bli http://www...../minasida.aspx?id=AU4I298LJ
http://www...../minasida.aspx?id=124 kan bli http://www...../minasida.aspx?id=8JRXZ7R1P
Jag hoppas ni förstår hur jag menar. Jag har letat lite på nätet men hittar mest riktig kryptering som är väldigt komplex.
Tacksam för förslag, tips och ideer.
Jag skriver i VB.NET
MVH
FredrikSv: Enkel kryptering
Då tycker jag det är bättre att du gör en sådan säkerhetshantering, busienssauthorization typ.
Om man anger löpnr 123456 och är användare 3 som tillhör organisationen x så får han/hon ev access till detta nummer, men om nummer 123456 inte alls tilhör denna organisation och användare förnekas access.
För det är inte så svårt att lista ut kryptering om man på nått sätt kan se löpnummret och även den krypterade datan. Ex i qury och på sidan ser man löpnummret.
Mvh JohanSv:Enkel kryptering
Jag har tusentals bilder på olika artiklar i en databas. När jag hämtar dessa skriver jag såhär:
<img src="/get_image.aspx?ID=123"> men jag vill alltså skriva <img src="/get_image.aspx?ID=XUEL83U9O"> istället.
Jag förstår att det är ganska lätt att knäcka, men jag vill undvika det mest basala;
<img src="/get_image.aspx?ID=123">
<img src="/get_image.aspx?ID=124">
<img src="/get_image.aspx?ID=125">
<img src="/get_image.aspx?ID=126">
.
.
.
.
Det är ju klart lättare att spara ner bilderna i något program genom att loopa från t.ex. 1 till 1000.
Om någon har en listig idé får ni gärna dela den med mig.
Tack på förhand,
FredrikSv: Enkel kryptering
Sv: Enkel kryptering
Sv:Enkel kryptering
Det är därför jag inte valt att rekomendera detta.
Kostar mer än vad det smakar.Sv: Enkel kryptering
I så fall bör man tänka om lite.
Kör man inte Access o vill bygga sin egna kryptera och omkryptera kod o få till alt sånt på alla tällen,
har man nog bekostat x antal utvecklingstid och penagar än vad GUID skulle kosta.
Att köpa lite extra hårdvara för några hundrallappar för att få upp hastigheten är mkt billigare än att
koda en massa...
Nu säger ja gitne att GUID skulle vara bäst, men att man iböand bör se på sina resurser före man tänker på prestanda i de mån då man ev kan påverka prestanda genom ut- eller upp-skaling av hårdvara istället för offra timmar på kod.
Mvh JohanSv:Enkel kryptering
Då är den enklaste lösning att ändra en egenskap för räknaren. Då slipper du skriva om kod eller förlora prestanda till GUID.
Om det inte rör sig om access är mitt svar inte applicerbart i samma utsträckning.
JAg föredrar då GUID framför en kodfunktion. För mig har inte kodfunktionen varit ett alternativ. då den inte adresserar problemet utan bara symtomet.Sv: Enkel kryptering
MVH
FredrikSv:Enkel kryptering
Vet vad du är ute efter, har precis implementerat samma sak i ett projekt här.
Klassen kommer nedan, och exempel längst ner.
<code>
Imports System.Diagnostics
Imports System.Security.Cryptography
Imports System.Text
Imports System.IO
Public Class CryptoUtil
'8 bytes randomly selected for both the Key and the Initialization Vector
'the IV is used to encrypt the first block of text so that any repetitive
'patterns are not apparent
Private Shared KEY_64() As Byte = {42, 16, 93, 156, 78, 4, 218, 32}
Private Shared IV_64() As Byte = {55, 103, 246, 79, 36, 99, 167, 3}
'24 byte or 192 bit key and IV for TripleDES
Private Shared KEY_192() As Byte = {42, 16, 93, 156, 78, 4, 218, 32, _
15, 167, 44, 80, 26, 250, 155, 112, _
2, 94, 11, 204, 119, 35, 184, 197}
Private Shared IV_192() As Byte = {55, 103, 246, 79, 36, 99, 167, 3, _
42, 5, 62, 83, 184, 7, 209, 13, _
145, 23, 200, 58, 173, 10, 121, 222}
'Standard DES encryption
Public Shared Function Encrypt(ByVal value As String) As String
If value <> "" Then
Dim cryptoProvider As DESCryptoServiceProvider = _
New DESCryptoServiceProvider
Dim ms As MemoryStream = New MemoryStream
Dim cs As CryptoStream = _
New CryptoStream(ms, cryptoProvider.CreateEncryptor(KEY_64, IV_64), _
CryptoStreamMode.Write)
Dim sw As StreamWriter = New StreamWriter(cs)
sw.Write(value)
sw.Flush()
cs.FlushFinalBlock()
ms.Flush()
'convert back to a string
Return Convert.ToBase64String(ms.GetBuffer(), 0, ms.Length)
End If
End Function
'Standard DES decryption
Public Shared Function Decrypt(ByVal value As String) As String
If value <> "" Then
value = value.Replace(" ", "+")
Dim cryptoProvider As DESCryptoServiceProvider = _
New DESCryptoServiceProvider
'convert from string to byte array
Dim buffer As Byte() = Convert.FromBase64String(value)
Dim ms As MemoryStream = New MemoryStream(buffer)
Dim cs As CryptoStream = _
New CryptoStream(ms, cryptoProvider.CreateDecryptor(KEY_64, IV_64), _
CryptoStreamMode.Read)
Dim sr As StreamReader = New StreamReader(cs)
Return sr.ReadToEnd()
End If
End Function
'TRIPLE DES encryption
Public Shared Function EncryptTripleDES(ByVal value As String) As String
If value <> "" Then
Dim cryptoProvider As TripleDESCryptoServiceProvider = _
New TripleDESCryptoServiceProvider
Dim ms As MemoryStream = New MemoryStream
Dim cs As CryptoStream = _
New CryptoStream(ms, cryptoProvider.CreateEncryptor(KEY_192, IV_192), _
CryptoStreamMode.Write)
Dim sw As StreamWriter = New StreamWriter(cs)
sw.Write(value)
sw.Flush()
cs.FlushFinalBlock()
ms.Flush()
'convert back to a string
Return Convert.ToBase64String(ms.GetBuffer(), 0, ms.Length)
End If
End Function
'TRIPLE DES decryption
Public Shared Function DecryptTripleDES(ByVal value As String) As String
If value <> "" Then
Dim cryptoProvider As TripleDESCryptoServiceProvider = _
New TripleDESCryptoServiceProvider
'convert from string to byte array
Dim buffer As Byte() = Convert.FromBase64String(value)
Dim ms As MemoryStream = New MemoryStream(buffer)
Dim cs As CryptoStream = _
New CryptoStream(ms, cryptoProvider.CreateDecryptor(KEY_192, IV_192), _
CryptoStreamMode.Read)
Dim sr As StreamReader = New StreamReader(cs)
Return sr.ReadToEnd()
End If
End Function
End Class
</code>
Och använd med:
encryptedstring = Encrypt("blabla")
decryptedstring = Decrypt(encryptedstring)
TripleDES behöver du inte för att stoppa mipplande med querysträngar =)
/RickardSv:Enkel kryptering
Om det dessutom bara sker en redirect sedan kan man ju hoppaförbi kontrollen.
Osv.
Därför jag vill veta hur han gör.