Avatar billede benneharli Juniormester
16. juni 2009 - 16:06 Der er 5 kommentarer og
1 løsning

Konvertere string til binary

Hejsa

Jeg har en binær celle jeg gerne vil lægge en string ind i... How to?

Cellen er binary(129)
Avatar billede arne_v Ekspert
16. juni 2009 - 16:49 #1
Ifoelge http://msdn.microsoft.com/en-us/library/ms187928.aspx er VARCHAR->BINARY en af de konverteringer som CAST og CONVERT kan klare.
Avatar billede benneharli Juniormester
16. juni 2009 - 17:07 #2
Kan du lave et eksempel?

DECLARE @pass varchar
SET @pass = dacs
CAST(@pass AS binary(129))
UPDATE Operators
SET Password=@pass WHERE OperatorName=br

Det her giver nemlig fejl i CAST
Avatar billede Syska Mester
16. juni 2009 - 18:21 #3
Tror der er flere fejl.

Ville du ikke have fra binary til varchar ?

Din Cast smider jo dit resultat væk ... bør nok være:

SET @pass = CAST(@ditbinpassword AS varchar(129));

og så din update
Avatar billede benneharli Juniormester
16. juni 2009 - 18:27 #4
Det her virkede, men det ser ud til at der er noget kryptering på... Ligger der en indbygget f.eks. MD5 kryptering i SQL?

DECLARE @pass varchar(129)
SET @pass = 'dacs'

UPDATE Operators
SET Password = CONVERT(binary(129),@pass)
WHERE OperatorName='br'
Avatar billede benneharli Juniormester
16. juni 2009 - 18:40 #5
Kan godt se fejlen nu :-(

Smid et svar begge to... Og svar gerne på det med MD5 ;-)
Avatar billede arne_v Ekspert
16. juni 2009 - 20:33 #6
SQLServer har saa vidt jeg ved ikke indbygget support for MD5.

I SQLServer 2005 og 2008 kan du lave din egen funktion i C# - det er saerdeles nemt at lave MD5.

Kode:

using System;
using System.Data.Sql;
using System.Data.SqlTypes;
using System.Data.SqlClient;
using System.Text;
using System.Security.Cryptography;

using Microsoft.SqlServer.Server;

namespace E
{
    public class Hash
    {
        private static readonly Encoding utf8 = new UTF8Encoding();
        private static readonly MD5 md5 = new MD5CryptoServiceProvider();
        [SqlFunction]
        public static SqlString MD5Calc(string s)
        {
            byte[] binres = md5.ComputeHash(utf8.GetBytes(s));
            StringBuilder res = new StringBuilder("");
            for(int i = 0; i < binres.Length; i++)
            {
                res.Append(String.Format("{0:x2}", binres[i]));
            }
            return res.ToString();
        }
    }
}

Generelt er MD5 foraeldet og boer undgaaes.

Og svar.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester



IT-JOB