dns端口号是域名系统 (Domain Name System) 的缩写,该系统用于命名组织到域层次结构中的计算机和网络服务。在Internet上域名与IP地址之间是一一对应的,域名虽然便于人们记忆,但机器之间只能互相认识IP地址,它们之间的转换工作称为域名解析,域名解析需要由专门的域名解析服务器来完成。
椭圆曲线数字签名算法(ECDSA)是使用椭圆曲线密码(ECC)对数字签名算法(DSA)的模拟。ECDSA于1999年成为ANSI标准,并于2000年成为IEEE和NIST标准。它在1998年既已为ISO所接受,并且包含它的其他一些标准亦在ISO的考虑之中。与普通的离散对数问题(discrete logarithm problem DLP)和大数分解问题(integer factorization problem IFP)不同,椭圆曲线离散对数问题(elliptic curve discrete logarithm problem ECDLP)没有亚指数时间的解决方法。因此椭圆曲线密码的单位比特强度要高于其他公钥体制。
///<summary> /// Replaces old text with new. New text can contain any special characters. /// Old text cannot contain special charactes. ///</summary> ///<param name="oldText"></param> ///<param name="newText"></param> publicvoidReplace(string oldText, string newText) { mDoc.Range.Replace(new Regex(Regex.Escape(oldText)), new ReplaceEvaluatorFindAndInsertText(newText), false); }
///<summary> /// This method is called by the Aspose.Words find and replace engine for each match. /// This method replaces the match string, even if it spans multiple runs.</summary> ///<param name="e"></param> ///<returns></returns> ReplaceAction IReplacingCallback.Replacing(ReplacingArgs e) { // This is a Run node that contains either the beginning or the complete match. Node currentNode = e.MatchNode;
// The first (and may be the only) run can contain text before the match, // in this case it is necessary to split the run.
if (e.MatchOffset > 0) currentNode = SplitRun((Run)currentNode, e.MatchOffset);
// This array is used to store all nodes of the match for further removing. ArrayList runs = new ArrayList();
// Find all runs that contain parts of the match string. int remainingLength = e.Match.Value.Length;
// Select the next Run node. // Have to loop because there could be other nodes such as BookmarkStart etc. do { currentNode = currentNode.NextSibling; } while ((currentNode != null) && (currentNode.NodeType != NodeType.Run)); }
// Split the last run that contains the match if there is any text left. if ((currentNode != null) && (remainingLength > 0)) { SplitRun((Run)currentNode, remainingLength);
runs.Add(currentNode); }
// Create Document Buidler and insert text. DocumentBuilder builder = new DocumentBuilder(e.MatchNode.Document as Document);
builder.MoveTo((Run)runs[runs.Count - 1]);
builder.Write(mText);
// Now remove all runs in the sequence. foreach (Run run in runs)
run.Remove();
// Signal to the replace engine to do nothing because we have already done all what we wanted. return ReplaceAction.Skip; }
///<summary> /// Splits text of the specified run into two runs. /// Inserts the new run just after the specified run.</summary> ///<param name="run"></param> ///<param name="position"></param> ///<returns></returns> privatestatic Run SplitRun(Run run, int position) { Run afterRun = (Run)run.Clone(true);