zoukankan
html css js c++ java
安全的获取输入的密码基于非托管缓冲区
/**/
/*
--===------------------------------------------===---
终于,Snippet Compiler开始支持UNICODE字符编码了。
我亲爱的同学们,可以从下面的地址下载:
http://www.sliver.com/dotnet/SnippetCompiler/
这次我们演示这样一个demo:csc /unsafe register.cs
编写提示用户输入密码的控制台程序,要求考虑安全性。
--===------------------------------------------===---
*/
namespace
xumh
{
public
class
Register
{
public
static
void
Main()
{
using
(System.Security.SecureString ss
=
new
System.Security.SecureString())
{
System.Console.Write(
"
请输入密码:
"
);
while
(
true
)
{
System.ConsoleKeyInfo cki
=
System.Console.ReadKey(
true
);
if
(cki.Key
==
System.ConsoleKey.Enter)
break
;
ss.AppendChar(cki.KeyChar);
System.Console.Write(
"
*
"
);
}
System.Console.WriteLine();
//
显示输入的密码
DisplaySecureString(ss);
}
//
using后的SecureString会被销毁
}
//
显示密码的方法
private
unsafe
static
void
DisplaySecureString(System.Security.SecureString ss)
{
char
*
p
=
null
;
try
{
//
将 SecureString 揭秘到一个非托管内存缓冲区
p
=
(
char
*
) System.Runtime.InteropServices.Marshal.SecureStringToCoTaskMemUnicode(ss);
for
(
int
i
=
0
; p[i]
!=
0
; i
++
)
System.Console.Write(p[i]);
}
finally
{
if
(p
!=
null
)
//
确保清楚并释放已解密SecureString字符的非托管内存缓冲区
System.Runtime.InteropServices.Marshal.ZeroFreeCoTaskMemUnicode((System.IntPtr) p);
}
}
}
}
查看全文
相关阅读:
调用匿名函数的骚操作
angular,vue,react的父子通信
JavaScript高阶函数的应用
图解javascript中this指向
前端开发必备
MEAN-全栈javascript开发框架
MongoDB初识
ES6新特性概览
为什么是link-visited-hover-active
CSS布局 — 圣杯布局与双飞翼布局
原文地址:https://www.cnblogs.com/flaaash/p/1197324.html
最新文章
ssh登录时较慢的解决方法
MYSQL三种安装方式--rpm包安装
Low-overhead enhancement of reliability of journaled file system using solid state storage and de-duplication
Python 常用文件
iStat Menus 的激活密
验证 Xcode是否有效方法
grep 满足多个关键字 任意关键字 排除多个关键字
iOS真机命令(自动化测试)
iOS模拟器命令xcrun simctl系列(自动化测试)
CocoaPods -- ios项目中安装和使用CocoaPods
热门文章
如何用iOS工程生成iOS模拟器包
Python 标准异常总结
随机排序四种方法
async+await处理异步问题
三栏布局
两栏布局三种方法(亲测有效)
小程序之云函数的创建与使用
小程序中的知识点
ajax跨域
angular中的服务
Copyright © 2011-2022 走看看