টি-এসকিউএল সহ এমডি 5 হ্যাশ স্ট্রিং উত্পন্ন করুন


100

Fn_varbintohexstr ব্যবহার না করে MD5 হ্যাশ স্ট্রিং টাইপ ভারচারের (32) স্ট্রিং তৈরি করার কি উপায় আছে?

SUBSTRING(master.dbo.fn_varbintohexstr(HashBytes('MD5', 'email@dot.com')), 3, 32)

সুতরাং এটি SCHEMABINDING এর সাথে কোনও ভিউয়ের অভ্যন্তরে ব্যবহার করা যেতে পারে


উত্তর:


200
CONVERT(VARCHAR(32), HashBytes('MD5', 'email@dot.com'), 2)

আপনি কীভাবে এসকিউএল 2003 এ এটি করেন? এটি সঠিকভাবে এনকোডযুক্ত স্ট্রিং ফিরছে না ...?
জোশুয়া এফ। রাউন্ট্রি

@JoshuaRountree, আমার উত্তর এ দেখতে stackoverflow.com/questions/3525997/...
dellasavia

66

হ্যাশবাইট ব্যবহার করুন

SELECT HashBytes('MD5', 'email@dot.com')

এটি আপনাকে 0xF53BD08920E5D25809DF2563EF9C52B6 দেবে

-

SELECT CONVERT(NVARCHAR(32),HashBytes('MD5', 'email@dot.com'),2)

এটি আপনাকে F53BD08920E5D25809DF2563EF9C52B6 দেবে


4
@ ব্রেন্ডন, আপনি শেষে ", 2)" রেখে গেছেন।
রায়ান এলকিনস

4
@ রায়ানএলকিনস আমি ব্রেন্ডনের মতো একই ফলাফল পেয়েছি এবং অবশ্যই আমি ", 2)" অন্তর্ভুক্ত রয়েছি :(
ম্যাথু


16

অন্য কোনও উত্তর আমার পক্ষে কাজ করেনি। মনে রাখবেন যে এসকিউএল সার্ভার বিভিন্ন ফলাফল দেবে যদি আপনি একটি হার্ড কোডিং স্ট্রিংয়ে বনাম আপনার ফলস্বরূপের কলাম থেকে এটি ফিড করে। নীচে আমার কাছে এসকিউএল সার্ভার এবং মাইএসকিএল-এর মধ্যে একটি নিখুঁত ম্যাচ দেওয়ার জন্য যে জাদুটি কাজ করেছিল তা নীচে

select LOWER(CONVERT(VARCHAR(32), HashBytes('MD5', CONVERT(varchar, EmailAddress)), 2)) from ...

4
LOWER()যদি এটি সংবেদনশীল হয় তবেই ব্যবহার করা প্রয়োজন।
কাউটলাকিস

প্রথম রূপান্তরটি গুরুত্বপূর্ণ হয়ে উঠেছে। এটি এর কার্যকারিতার MD5তুলনায় অভিন্ন হ্যাশ দেয় । কেন আমি ভাবছি ছিল থেকে hashs পৃথক এবং । রেসিপিটির জন্য ধন্যবাদ ..MD5()PostgresqlMD5PythonPostgresql
বেন

14

8000 অক্ষর পর্যন্ত ডেটার জন্য ব্যবহার করুন:

CONVERT(VARCHAR(32), HashBytes('MD5', 'email@dot.com'), 2)

Demo

বাইনারি ডেটার জন্য (8000 বাইটের সীমা ছাড়াই) ব্যবহার করুন:

CONVERT(VARCHAR(32), master.sys.fn_repl_hash_binary(@binary_data), 2)

Demo



0
declare @hash nvarchar(50)
--declare @hash varchar(50)

set @hash = '1111111-2;20190110143334;001'  -- result a5cd84bfc56e245bbf81210f05b7f65f
declare @value varbinary(max);
set @value = convert(varbinary(max),@hash);


select  
 SUBSTRING(sys.fn_sqlvarbasetostr(HASHBYTES('MD5', '1111111-2;20190110143334;001')),3,32) as 'OK'
,SUBSTRING(sys.fn_sqlvarbasetostr(HASHBYTES('MD5', @hash)),3,32) as 'ERROR_01'
,SUBSTRING(sys.fn_sqlvarbasetostr(HASHBYTES('MD5',convert(varbinary(max),@hash))),3,32) as 'ERROR_02'
,SUBSTRING(sys.fn_sqlvarbasetostr(sys.fn_repl_hash_binary(convert(varbinary(max),@hash))),3,32)
,SUBSTRING(sys.fn_sqlvarbasetostr(master.sys.fn_repl_hash_binary(@value)),3,32)

সমাধান ... @ হ্যাশ বর্ণাফার ঘোষণা করুন (50) md5.gromweb.com/?string=1111111-2%3B20190110143334%3B001
ফার্নান্দো ইয়েভেনস

0
SELECT CONVERT(
      VARCHAR(32),
      HASHBYTES(
                   'MD5',
                   CAST(prescrip.IsExpressExamRX AS VARCHAR(250))
                   + CAST(prescrip.[Description] AS VARCHAR(250))
               ),
      2
  ) MD5_Value;

আমার জন্য কাজ কর.


0

আপনি স্পষ্টভাবে বলেননি যে আপনি স্ট্রিংটি হেক্স হতে চেয়েছিলেন; আপনি যদি আরও স্পেস দক্ষ বেস 64 স্ট্রিং এনকোডিংয়ের জন্য উন্মুক্ত হন এবং আপনি এসকিউএল সার্ভার 2016 বা তার পরে ব্যবহার করছেন তবে এখানে বিকল্প রয়েছে:

select SubString(h, 1, 32) from OpenJson(
    (select HashBytes('MD5', 'email@dot.com') h for json path)
) with (h nvarchar(max));

এটি উত্পাদন করে:

9TvQiSDl0lgJ3yVj75xStg==
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.