Avatar billede schris Praktikant
06. februar 2007 - 07:58 Der er 5 kommentarer og
1 løsning

SHA1-Base32 converter

Hej!

Jeg mangler en utill, der kan foretage en konvertering af SHA1-Base32 encodede strenge til alm. standard SHA1 strenge.

P.t. har jeg et dokument med ca 2000 strenge jeg skal have konverteret :-( - lidt meget at gøre "by hand"
Avatar billede kjulius Novice
06. februar 2007 - 22:42 #1
Måske kan du bruge online converteren

http://darkfader.net/toolbox/convert/
Avatar billede arne_v Ekspert
07. februar 2007 - 04:53 #2
hvis du med Base32 mener det jeg tror du mener så er her et lille stykke C# som
kan konvertere til og fra Base32

using System;
using System.Text;
using System.Collections;

namespace E
{
    public class BaseBase
    {
        private string charset;
        private int basis;
        private int pad;
        public BaseBase(string charset, int basis, int pad)
        {
            this.charset = charset;
            this.basis = basis;
            this.pad = pad;
        }
        private int[] mask = { 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80 };
        public string Encode(byte[] b)
        {
            StringBuilder sb = new StringBuilder();
            bool[] bit = new bool[8 * b.Length];
            for(int i = 0; i < b.Length; i++)
            {
                for(int j = 0; j < 8; j++)
                {
                    bit[8 * i + j] = ((b[i] & mask[7 - j]) != 0);
                }
            }
            for(int i = 0; i < bit.Length; i += basis)
            {
                int v = Get(bit, i, basis);
                sb.Append(charset[v]);
            }
            return sb.ToString().PadRight(((sb.Length + pad - 1) / pad) * pad, '=');
        }
        public byte[] Decode(string s)
        {
            string s2 = s.Trim("=".ToCharArray());
            bool[] bit = new bool[basis * s2.Length];
            for(int i = 0; i < s2.Length; i++)
            {
                byte b = (byte)charset.IndexOf(s2[i]);
                for(int j = 0; j < basis; j++)
                {
                    bit[basis * i + j] = ((b & mask[basis - 1 - j]) != 0);
                }
            }
            byte[] byt = new byte[bit.Length / 8];
            for(int i = 0; i < byt.Length; i++)
            {
                byt[i] = (byte)Get(bit, i * 8, 8);
            }
            return byt;
        }
        private int Get(bool[] bit, int ix, int n)
        {
            int res = 0;
            for(int i = 0; i < n; i++)
            {
                res = 2 * res + ((ix + i < bit.Length) ? (bit[ix + i] ? 1 : 0) : 0);
            }
            return res;
        }
    }
    public class Base64 : BaseBase
    {
        private const string BASE64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
        public Base64() : base(BASE64, 6, 4)
        {
        }
    }
    public class Base32 : BaseBase
    {
        private const string BASE32 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567/";
        public Base32() : base(BASE32, 5, 8)
        {
        }
    }
    public class MainClass
    {
        public static void Test(byte[] b)
        {
            Base64 b64 = new Base64();
            Console.WriteLine(b64.Encode(b));
            Console.WriteLine(Convert.ToBase64String(b));
            byte[] b2 = b64.Decode(b64.Encode(b));
            for(int i = 0; i < b2.Length; i++) Console.Write(" " + b2[i]);
            Console.WriteLine();
            Base32 b32 = new Base32();
            Console.WriteLine(b32.Encode(b));
            byte[] b3 = b32.Decode(b32.Encode(b));
            for(int i = 0; i < b3.Length; i++) Console.Write(" " + b3[i]);
            Console.WriteLine();
        }
        public static void Main(string[] args)
        {
            Test(new byte[] { });
            Test(new byte[] { 1 });
            Test(new byte[] { 1, 2 });
            Test(new byte[] { 1, 2, 3 });
            Test(new byte[] { 1, 2, 3, 4 });
            Test(new byte[] { 1, 2, 3, 4, 5 });
            Test(new byte[] { 1, 2, 3, 4, 5, 6 });
            Test(new byte[] { 1, 2, 3, 4, 5, 6, 7 });
            Test(Encoding.ASCII.GetBytes("foobar"));
            Console.ReadLine();
        }
    }
}
Avatar billede arne_v Ekspert
25. marts 2007 - 16:05 #3
schris ?
Avatar billede schris Praktikant
25. marts 2007 - 17:38 #4
Hej Arne og kjulius. Har kigget på begge jeres kommentarer. Varf inde på darkfader, men det var ikke lige det jes skulle bruge. Mht. Arne - jeg kiggede kort på koden, men brugte den ikke selv. fik en aftale med en python haj, der lavede utillen til mig - men tak for jeres bud ....
Avatar billede kjulius Novice
02. august 2007 - 18:21 #5
Du skal under alle omstændigheder have lukket spørgsmålet. Angiv lige hvem der skal lægge et svar (eller læg et selv), så du kan lukke.
Avatar billede schris Praktikant
27. august 2011 - 13:26 #6
a
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
Kurser inden for grundlæggende programmering

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