SHA1 Şifreleme Metodu

Eyl 08, 2013
Secure Hashing Algorithm olarak adlandırılan, şifreleme algoritmaları içerisinde en yaygın olarak kullanılan algoritma olduğu kabul gören SHA1, United States National Security Agency tarafından tasarlanmıştır. “Hash” fonksiyonlarına dayalı veritabanı yönetimine (database management) imkan sağlar. 

Özellikleri

  • SHA1 algoritması ile sadece şifreleme işlemi yapılır, şifre çözümleme işlemi yapılamaz.
  • Diğer SHA algoritmaları içerisinde en yaygın olarak kullanılan SHA1 algoritmasıdır.
  • SHA1 algoritması ile 160 bitlik özetler oluşturulur. MD5 ve SHA1 arasındaki temel fark oluşturdukları özetlerdeki boyut farkıdır.
  • SHA1 algoritması, e-posta şifreleme uygulamaları, güvenli uzaktan erişim uygulamaları, özel bilgisayar ağları ve daha bir çok alanda kullanılabilir.
  • Günümüzde güvenliği arttırmak amacıyla SHA1 ve MD5 algoritmaları birbiri ardına kullanılarak veriler şifrelenir.

             

Çakışmalar (Collisions)

Şifreleme algoritmalarında karşı karşıya gelinen problemlerden biri Çakışma (Collision) problemidir. Çakışma, iki farklı verinin şifreleme işlemi sonrasında aynı özete sahip olması olarak tanımlanabilir. SHA1 ile birlikte en yaygın kullanılan şifreleme algoritması olarak tanımlayabileceğimiz MD5 algoritması ile 128 bitlik özetler oluşturulur. Bu durumda, 264 deneme yapmak çakışma bulmak için yeterli olacaktır. SHA1 algoritmasında bu durum 160 bitlik özetler oluşturularak ve çakışmaya karşı güvenlik derecesi 280 denemeye çıkarılarak daha güvenli hale getirilmiştir.

.NET Teknolojisi ile SHA1 Şifreleme

.NET teknolojisi ile yazılım geliştirilirken, herhangi bir veride şifreleme yapmak için .NET Framework içerisinde yer alan System.Security.Cryptography kütüphanesi kullanılır. Bu kütüphane içerisinde yer alan fonksiyonlar sayesinde, yazılımcının isteği doğrultusunda güvenli bir şekilde veri şifreleme ve şifre çözümleme yapılabilmektedir. SHA1 algoritması kullanılarak şifreleme yapılabilmesi için SHA1CryptoServiceProvider sınıfının kullanılması gereklidir.

ASP .NET 'de SHA1 Uygulaması

Windows Form uygulamasında şifreleme yapan metot aşağıda gösterilmiştir.

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.Security.Cryptography;

 

namespace SHA1

{

    public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

        }

 

        public string getSHA1Hash(string input)

        {

            SHA1 sha1Hasher = SHA1.Create();

            byte[] data = sha1Hasher.ComputeHash(Encoding.Default.GetBytes(input));

            StringBuilder sBuilder = new StringBuilder();

            for (int i = 0; i < data.Length; i++)

            {

                sBuilder.Append(data[i].ToString("x2"));

            }

            return sBuilder.ToString();

        }

 

        private void btsifrele_Click(object sender, EventArgs e)

        {

            lbsifreli.Text = getSHA1Hash(tbsifrelenecek.Text);

        }

    }

}

 

                 

Eğer aynı işlem Web Uygulaması olarak yapılırsa bir web form oluşturulur. 

%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" 

Inherits="_Default" %>

 

<!DOCTYPE html>

 

<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">

    <title></title>

</head>

<body>

    <form id="form1" runat="server">

    <div>

    <asp:TextBox ID="deneme" runat="server"></asp:TextBox>

        <asp:Button ID="button2" runat="server" Text="gönder" OnClick="button2_Click"/><br />

        <asp:Label ID="lbsss" runat="server" Text="asdsaa"></asp:Label>

    </div>

    </form>

</body>

</html>

Kod kısmında Web.Security kütüphanesi eklenmelidir.

using System;
using System.Linq;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Security.Cryptography;
using System.IO;
using System.Web.Security;

public partial class _Default : System.Web.UI.Page

{

    protected void Page_Load(object sender, EventArgs e)

    {

 

    }

 

    protected void button2_Click(object sender, EventArgs e)

    {

        deneme.Text = 
FormsAuthentication.HashPasswordForStoringInConfigFile(deneme.Text, "SHA1");

    }

}

Bazı SHA1 şifreleme örnekleri

Şifre: 280513

SHA1 Hash: 832c5697f6ec8a03ca4030a7787a91df85189b36

Şifre: İTÜ BİDB

SHA1 Hash: 75c9349589a97c8a407a1b226ba52f8077a31a85

Şifre: 146aks-

SHA1 Hash: 39d091f822b5d2460b34afbf3ef3cee8006ba9d0