<pre name="code" class="csharp">using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Security.Cryptography; namespace RTSP_Digest_Authentication { class Program { /// <summary> /// MD5 32位加密 /// </summary> /// <param name="str"></param> /// <returns></returns> static string md5(string str) { MD5 md5 = new MD5CryptoServiceProvider(); byte[] bytes = System.Text.Encoding.UTF8.GetBytes(str); bytes = md5.ComputeHash(bytes); md5.Clear(); string ret = ""; for (int i = 0; i < bytes.Length; i++) { ret += Convert.ToString(bytes[i], 16).PadLeft(2, '0');//补0 } return ret.PadLeft(32, '0'); //补0 } private static string computeDigestResponse(string username, string userpwd, string realm, string cmd, string nonce, string url) { // The "response" field is computed as: // md5(md5(<username>:<realm>:<password>):<nonce>:md5(<cmd>:<url>)) // or, if "fPasswordIsMD5" is True: // md5(<password>:<nonce>:md5(<cmd>:<url>)) string ha1 = md5(username + ":" + realm + ":" + userpwd); string ha2 = md5(cmd + ":" + url); string response = md5(ha1 + ":" + nonce + ":" + ha2); return response; } static void Main(string[] args) { string username = "root"; string userpwd = "admin"; string realm = "Operator"; string cmd = "DESCRIBE"; string nonce = "3983eb84382ba9811726fc1c2e7fb8be"; string url = "rtsp://root:admin@192.168.10.24:554/profile1=r"; string response = computeDigestResponse(username, userpwd, realm, cmd, nonce, url); Console.WriteLine(response); } } }
C# 实现rtsp Digest Authentication Response,布布扣,bubuko.com
C# 实现rtsp Digest Authentication Response
原文地址:http://blog.csdn.net/q317379184/article/details/38398555