- 博客(40)
- 资源 (38)
- 收藏
- 关注
原创 浏览器端纯JS生成自签名SSL证书
使用现代浏览器的crypto.subtle接口,在浏览器端使用JS生成自签名证书,无网络请求,降低私钥暴露风险。
2024-09-23 15:53:34 145
原创 纯浏览器生成密钥对和CSR(证书签名请求)
纯浏览器端生成CSR和密钥对,使用指定算法和参数生成证书签发请求(CSR),至少要提供subject,可提供subjectAltNames。使用指定的算法和参数,生成非对称加密密钥对。
2024-09-20 16:04:08 291
原创 基于ACMEv2协议的免费SSL证书申请-支持Let‘s Encrypt/Google/ZeroSSL
带webui的免费证书申请系统,整体没有特别多的功能,提供的都是基础支持,签发速度快。集成阿里云腾讯云Cloudflare的DNS。集成Let's encryptGoogleZeroSSL三家免费证书服务商(Google和ZeroSSL需要绑定EAD信息)。可纯前端生成CSR和私钥,降低私钥在网络上暴露的风险。网络请求集成了SOCKS5代理。
2024-09-20 14:40:57 398
原创 基于ACMEv2协议的免费证书申请
免费SSL证书申请,非开源,使用webui管理证书的申请,所有文件本地化存储,支持windows/linux/osx.
2024-09-12 10:25:17 464
原创 PHP使用ltrim、rtrim以及trim处理中文时遇到的“坑”
发现经过rtrim处理的字符串无法入库,检查后发现数据库有报错信息。问题主要来源是PHP这几个方法是二进制安全的,开发中没有意识到处理多字节编码的字符会出现问题。
2021-09-18 09:50:53 1227
原创 C#实现WebSocket服务器:(05)实现聊天室-前端部分
这两篇文章主要是对我们前面对WebSocket协议的实现,通过自定义payload内容实现一个简单的聊天室。可以实现多聊天室、聊天室切换功能,后端代码都实现了,只是我们前端没去实现。
2021-09-16 23:02:17 2403
原创 C#实现WebSocket服务器:(04)实现聊天室-协议和后端部分
从后台到前端,实现一个简单的聊天室,实现效果:`用户登录`、`发送消息`、`接收消息`、`用户离开`。大部分逻辑是基于Text消息类型,将具体的消息封装成`JSON`字符串在客户端和服务器间传送。
2021-09-16 22:13:32 861
原创 C#完成端口IOCP:(02) 封装NetworkStream支持IOCP操作
实现一个继承NetworkStream的类,重写NetworkStream的BeginRead和BeginWrite方法,实现IOCP操作。
2021-09-13 17:50:50 1804
原创 C#完成端口IOCP:(01)SocketAsyncEventArgs封装
重写SocketAsyncEventArgs,实现ReadAsync和WriteAsync以及SocketAsyncEventArgs的复用。重写的SocketAsyncEventArgs没有太多逻辑,就是把SocketAsyncEventArgs的事件改成了回调,内部还是调用Socket的对应方法。
2021-09-13 17:14:13 984 1
原创 C#实现WebSocket服务器:(03)消息收发的封装
前文我们实现了WebSocket消息的读取和发送:C#实现WebSocket服务器:(02)消息帧分析和代码实现但是我们所有的逻辑都是写在OnWebSocket方法的,并不方便扩展,现在我们封装一个Messager抽象类,封装消息的读取和发送。Messager类封装我们将在类中暴露一些必要的方法。下面我们用消息这个词,而不是帧,因为一条消息可能是由多个帧(例如Text帧+N个Continuation帧)组成的。方法说明Accept在OnWebSocket方法中,调用具体Mes
2021-09-11 15:40:36 5634
原创 C#实现WebSocket服务器:(02)消息帧分析和代码实现
前文我们介绍了WebSocket的握手:C#实现WebSocket服务器:(01)握手握手完成后,即可客户端和服务端双方即可进行消息的收发。WebSocket消息的收发是以帧为单位的。0、WebSocket的帧帧类型Op常用帧类型有以下六种:值类型说明0x00Continuation后续帧,当一个帧是非结束帧的时候,后续帧会被标记为Continuation,应用程序需要一直读下一个帧,直到读到结束帧。0x01Text数据帧:文本,说明帧的Payload为文本经
2021-09-10 16:01:19 2452
原创 C#实现WebSocket服务器:(01)握手
WebSocket的握手是基于HTTP的,HTTP请求的Connection标头值为Upgrade,Upgrade标头的值为websocket,即表示当前请求为WebSocket握手请求。
2021-09-09 17:06:57 1467
原创 C#实现HTTP服务器:(10)处理文件上传
主要实现对HTTP文件上传的协议分析、请求实体编码分析和请求实体的解析,同时把文件保存到临时目录。
2021-09-09 14:36:06 3407
原创 C#实现HTTP服务器:(9)在一个Socket连接内处理多个HTTP请求
前面的文章,我们处理请求都是在一个连接上的,请求处理完,就关闭Stream,同时关闭了底层的Socket。如果一个网页包含的资源比较多,总共可能会需要发起几十上百个Socket连接,造成不必要的网络消耗(TCP的握手、挥手)。同时,浏览器都一个网站发起的连接数是有限制的,所以会导致页面资源加载缓慢的问题。我们来一步步解决这个问问,使一个连接可以处理多个请求。......
2021-09-06 17:52:29 2271
原创 C#实现HTTP服务器:(8)解析查询参数和HTTP请求实体
HTTP请求实体的界定:Content-Length、Transfer-Encoding。通过实现一个读取请求实体的Stream来读取整个实体,然后转换成指定编码的文本,再进行解析。
2021-09-06 11:15:24 1944 3
原创 C#实现HTTP服务器:(7)使用缓冲区优化对HTTP请求头的解析
实现一个继承NetworkStream的类BufferedNetworkStream,重写NetworkStream的Read和ReadByte方法,在我们重写的类中,使用一个大的缓冲区来存储数据,供下游应用使用,不再频繁调用基础设施的读取方法
2021-09-04 22:14:36 934
原创 C#实现HTTP服务器:(5)压缩传输(GZip,Deflate)
在传输数据的基础上,我们再对数据进行压缩,C#有对这两种压缩算法的实现。即位于`System.IO.Compression`命名空间下的`GZipStream`和`DeflateStream`。这里只讲怎样使用Gzip压缩数据,分别用`Content-Length`和`Transfer-Encoding`两种传输方式实现。
2021-09-03 21:19:30 2459
原创 C#实现HTTP服务器:(4)使用Transfer-Encoding标头向客户端发送响应
基于前面封装的响应应答器,尝试使用Chunked方式,向浏览器发送响应。
2021-09-03 17:51:26 1096
原创 C#实现HTTP服务器:(3)封装用于响应请求的应答器
为了方便后续处理各种HTTP响应,封装一个简单的应答器,作为各种响应类型的父类。应答器内部会自动生成HttpResponse,并暴露出HttpResponse和一些常用的接口。
2021-09-03 17:30:29 1320
原创 C#实现Socks5服务器
Socks5是比较常用的一种代理协议,各浏览器都支持的很好。这里简单实现下Sock5的协议,实现TCP代理。代码里面注释了详细的协议内容。监听服务器实现类继承前面的一篇文章实现的监听框架:C#实现一个简单的IOCP模式的服务端监听框架public class Socks5Server : TcpIocpServer{ /// <summary> /// 实现NewClient方法,处理Socks5请求 /// </summary> ///
2021-09-02 16:56:45 3287 6
原创 C#实现一个简单的IOCP模式的服务端监听框架
本类直接继承了SocketAsyncEventArgs,重写其内部的OnCompleted方法来处理客户端连接。只是一个基础的监听框架,具体的业务逻辑需要在子类实现NewClient方法后续其using System;using System.Net;using System.Net.Sockets;using System.Threading;namespace Socks5.Server{ /// <summary> /// 直接继承SocketAsyncE
2021-09-02 15:33:18 1821 3
原创 PHP基于流的RC4加密算法实现
基于流的RC4实现。$rc4 = new RC4(base_decode('abcdefghijklmnopqrstuv=='));$response = $rc4->encrypt('123456');$response2 = $rc4->encrypt('123456');因为是基于流的,response和response2的值会不一样。想要两次加密的值一样,需要用相同的密钥实例化RC4,再去加密或解密。具体实现如下class RC4{ private $_s_e
2021-08-31 22:25:39 793
原创 Vue中使用render渲染函数遇到的一个循环渲染的问题
渲染函数最基础的渲染函数new Vue({ el: '#app', render(h){ return h('div', 'hello world!'); }});new Vue({ el: '#app', render(h){ return h({template: '<div>hello world!</div>'}); }});Vue官方文档介绍中,说明了,createElement方法(h)的第一个参数可选值为
2021-08-29 11:33:58 3266
原创 Javascript的防抖/限流
1、防抖function lazyFunction(fn, timeout){ var timer = 0; return function(){ if(timer) window.clearTimeout(timer); var args = arguments, that = this; timer = window.setTimeout(function(){ fn.apply(that, args)
2021-08-26 09:05:00 1333
原创 WebSocket:响应头‘Sec-WebSocket-Accept‘的生成
private static string SHA1(byte[] clearData) { using (System.Security.Cryptography.SHA1 sha1 = System.Security.Cryptography.SHA1.Create()) { return Convert.ToBase64String(sha1.ComputeHash(clearData)); } } //固定值,拼接到末...
2021-08-25 17:25:08 2532
原创 C#版本的备案接口pwdHash生成代码(测试通过)
C#版本的备案接口pwdHash生成代码,已经测试通过。为了方便查看,代码放到类里面去了,关键的代码就是Hex2Bin函数和EncodeBase64,EncodeBase64直接接受的就是Hex2Bin生成的字节数组using System;using System.Configuration;using System.Web;using System.Web.Security;u
2010-02-27 22:52:00 921
原创 艾恩ASP无组件上传最新更新说明
利用周末的时间,对上传组件进行了比较大的更新,优化了上传代码,尽可能的降低上传的内存消耗同时提高上传的速度。具体修改及增加的功能如下:1.文件上传类改用jscript2.文件上传类增加几个属性 属性extend来保存文件的后缀 属性UserSetName来保存用户自定义的文件名 属性FormName来保存上传文件对应的表单名 属性Path来保存文件在服务器上的物理路径
2009-11-02 20:46:00 2117
原创 《艾恩ASP文件上传类》开发和使用总结
从去年4月12号开始着手写Asp无组件上传类开始,到现在系统的做出了无刷新带进度条的上传方式,整个开发和完善过程用了将近一年,本类完全由本人个人开发,包括组件版的开发。非常感谢在此期间使用和测试本类的所有朋友们以及今后可能会使用本类的朋友,我努力追求的就是方便自己的同时也给大家带来最大的方便。无组件版和组件版均可"非商业非赢利性"免费使用! 本类包括组件版和无组件版,目前二者均整合了进
2009-02-15 12:08:00 2969
原创 鼠标拖动层(可任意绑定DIV标签)(实现方法一)
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> http://www.w3.org/1999/xhtml"> 鼠标拖动层(可任意绑定DIV标签)(一) /*鼠标拖动层(可任意绑定DIV标签)(一)作者:Anlige联系方式:1034555083/zhanghuiguoanlige@126.com调用方法:var
2009-01-29 20:14:00 2940
原创 鼠标拖动层(可任意绑定DIV标签)(实现方法二)
实现鼠标拖动层的一种方法调用方法Endrag.bind(MoveDiv).bind(Div1).offSet({x:0,y:0});通过多次调用bind方法可以绑定任意多个Div标签;offSet设置偏移,默认x偏移和y偏移都为0,供调整使用本方法不能通过子元素绑定操作父元素 http://www.w3.org/TR/xhtml1/DTD/xhtml1-transition
2009-01-29 11:06:00 1327
原创 如何上传一个文件到Access数据库
文件上传是一个站点不可或缺的功能,为了方便自己的站点上传文件就自己开发了个无组件上传了,功能还不错--支持单文件、多文件、文件表单混合上传,有兴趣的可以到这里下载看看! 不多啰嗦了,直奔主体吧。本例子是以我最新发布的上传类为基础的,版本为v8.12.20。 首先新建一个access数据库bytes.mdb,添加一个表img,再给表添加3个字段--ID(自动编号)、Title(文本)、Ima
2009-01-02 09:48:00 2603 2
原创 Asp利用Stream实现文件下载
http://www.ii-home.cn/show.asp?id=116Dim StreamDim FileName Dim FileExt Const adTypeBinary = 1FileName="你的文件路径(在服务器上的物理路径)"FileName=replace(FileName,"/","/")name=mid(FileName,instrrev(FileName,"/
2008-10-05 08:33:00 1158
原创 强烈反驳‘6行代码实现无组件上传‘
下面这段代码就是网络上流传的"6行代码实现无组件上传". strFileName=Request.QueryString("file1")SetobjStream=Server.CreateObject("ADODB.Stream")objStream.Type=1adTypeBinaryobjStream.OpenobjStream.LoadFromFi
2008-09-28 19:58:00 812
原创 [AD]艾恩ASP无组件上传类(An-Upload)
下载地址:http://www.ii-home.cn/detial.asp?id=143本上传类为自己写的类,不敢夸口说多完美,但能实现基本的功能.包括提取表单数据、上传到不同文件夹、保存到数据库(上传和保存表单可同时进行)、限制上传扩展名、限制上传大小、选择文件保存类型(原文件名和时间随机命名)等! 1.尽量追求简洁,减少赘余代码 2.全面保存客户提交的信息(普通表单,文件域值,相同表单
2008-09-27 21:25:00 2929 7
原创 简单的单文件上传
花几个小时写的一个简单的单文件上传示例,里面附带详细的函数说明(主体函数每句都有) 在这里不是说我的水平有多高,只是和大家分享下,希望对一些朋友有些帮助 注意:此例只是上传单个文件,可以根据本示例的说明去研究以下别人写的无组件上传类(我的blog有我自己写的),应该会有很大帮助,这样会更灵活的去处理自己上传文件的时候遇见的各种问题,例如,文件以什么样的文件名保存,保存到哪里等....
2008-06-27 04:11:00 997
MoAspEnginer1.14(用于ASP的MVC框架)
2013-11-18
艾恩Ajax无刷新上传(ASP)最简单的调用方法
2009-10-29
艾恩ASP无组件上传类v9.9.9
2009-09-22
艾恩Ajax无刷新文件上传(带进度条,组件版,低CPU使用)
2009-02-10
艾恩Ajax无刷新文件上传(带进度条,无组件)
2009-02-10
jQuery中文参考手册(附jquery1.26)
2008-10-29
艾恩ASP无组件上传简单 示例
2008-09-01
Asp文件上传/管理(无惧上传类)
2008-03-12
.net framework2.0+langpack
2007-04-25
自己写的查找程序图标的程序(VB.NET)
2007-04-25
winsock注册方法
2007-04-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人