我自己调式了好一会,很多朋友问我,vb.net c# 怎么调用openssl ,c# 的就不写了,,差不多自己写, 自己看也,,也不多说了,这些申明,, Imports System.Runtime.InteropServices Imports System.Net Imports System.Net.Sockets Imports System.Text.RegularExpressions Imports System.Xml Imports System.Text Imports System.IO Public Class epp Public _exit As Boolean = True Public _pws As String Public _regeditmesage As String Public _purveyor As String Public obj As Form1 Public Event epp_event(ByVal domain As String) <DllImport("libeay32.dll", EntryPoint:="BIO_new_socket", SetLastError:=True)> _ Public Shared Function BIO_new_socket(ByVal socket As IntPtr, ByVal flag As Integer) As IntPtr End Function <DllImport("libeay32.dll", EntryPoint:="OPENSSL_add_all_algorithms_noconf", SetLastError:=True)> _ Public Shared Sub OPENSSL_add_all_algorithms_noconf() End Sub <DllImport("ssleay32.dll", EntryPoint:="SSL_connect", SetLastError:=True)> _ Public Shared Function SSL_connect(ByVal sslSocket As IntPtr) As Integer End Function <DllImport("ssleay32.dll", EntryPoint:="SSL_CTX_new", SetLastError:=True)> _ Public Shared Function SSL_CTX_new(ByVal ptr As IntPtr) As IntPtr End Function <DllImport("ssleay32.dll", EntryPoint:="SSL_CTX_free", SetLastError:=True)> _ Public Shared Sub SSL_CTX_free(ByVal ssl As IntPtr) End Sub <DllImport("ssleay32.dll", EntryPoint:="SSL_get_error", SetLastError:=True)> _ Public Shared Function SSL_get_error(ByVal ssl As IntPtr, ByVal ret As Integer) As Integer End Function <DllImport("ssleay32.dll", EntryPoint:="SSL_library_init", SetLastError:=True)> _ Public Shared Function SSL_library_init() As Integer End Function <DllImport("ssleay32.dll", EntryPoint:="SSL_new", SetLastError:=True)> _ Public Shared Function SSL_new(ByVal ptr As IntPtr) As IntPtr End Function <DllImport("ssleay32.dll", EntryPoint:="SSL_read", SetLastError:=True)> _ Public Shared Function SSL_read(ByVal ssl As IntPtr, ByVal buf() As Byte, ByVal num As Integer) As Integer End Function <DllImport("ssleay32.dll", EntryPoint:="SSL_set_fd", SetLastError:=True)> _ Public Shared Sub SSL_set_fd(ByVal ssl As IntPtr, ByVal sd As IntPtr) End Sub <DllImport("ssleay32.dll", EntryPoint:="SSL_set_bio", SetLastError:=True)> _ Public Shared Sub SSL_set_bio(ByVal ssl As IntPtr, ByVal BioRbio As IntPtr, ByVal BioWbio As IntPtr) End Sub <DllImport("ssleay32.dll", EntryPoint:="SSL_shutdown", SetLastError:=True)> _ Public Shared Function SSL_shutdown(ByVal ssl As IntPtr) As Integer End Function <DllImport("ssleay32.dll", EntryPoint:="SSL_write", SetLastError:=True)> _ Public Shared Function SSL_write(ByVal ssl As IntPtr, ByVal buf() As Byte, ByVal num As Integer) As Integer End Function <DllImport("ssleay32.dll", EntryPoint:="SSLv23_client_method", SetLastError:=True)> _ Public Shared Function SSLv23_client_method() As IntPtr End Function <DllImport("ssleay32.dll", EntryPoint:="SSL_CTX_use_certificate_file", SetLastError:=True)> _ Public Shared Function SSL_CTX_use_certificate_file(ByVal ssl As IntPtr, ByVal file As String, ByVal n As Integer) As IntPtr End Function <DllImport("ssleay32.dll", EntryPoint:="SSL_CTX_use_PrivateKey_file", SetLastError:=True)> _ Public Shared Function SSL_CTX_use_PrivateKey_file(ByVal ssl As IntPtr, ByVal file As String, ByVal n As Integer) As IntPtr End Function <DllImport("ssleay32.dll", EntryPoint:="SSL_CTX_check_private_key", SetLastError:=True)> _ Public Shared Function SSL_CTX_check_private_key(ByVal ssl As IntPtr) As IntPtr End Function Const SSL_FILETYPE_PEM = 1 Dim bReceived(4098) As Byte Dim numBytes As Integer Dim mySocket As Socket Dim epHost_cn As New IPEndPoint(Dns.GetHostByName("218.241.97.22").AddressList(0), 3000) ' random SSL-enforcing300 server for testing purposes Dim epHost_en As New IPEndPoint(Dns.GetHostByName("218.241.97.2").AddressList(0), 3121) ' random SSL-enforcing server for testing purposes Dim sslCtx As IntPtr Dim ssl_socket As IntPtr Private __certificate As String Private __PrivateKey As String Private __user As String Private __pws As String Private __iscn As Boolean Public Function GeneralCode() As String 'general random value from 65(A) to 122(z) Dim pre1 As Byte Dim pre2 As Byte Dim value As Integer Dim value1 As Integer Randomize() ' Initialize random-number generator. 'A--Z pre1 = Int((122 - 97 + 1) * Rnd() + 97) pre2 = Int((122 - 97 + 1) * Rnd() + 97) value = Int((1000000 * Rnd()) + 1) value1 = Int((1000000 * Rnd()) + 1) Dim code As String code = Char.ToUpper(Convert.ToChar(pre1)) & Char.ToUpper(Convert.ToChar(pre2)) & value.ToString & value1.ToString Return code End Function Public Function login(ByVal certificate As String, ByVal PrivateKey As String, ByVal user As String, ByVal pws As String, ByVal iscn As Boolean) Try __certificate = certificate __iscn = iscn __PrivateKey = PrivateKey __user = user __pws = pws mySocket = New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp) mySocket.Blocking = True Dim _bre As String If iscn Then mySocket.Connect(epHost_en) Else mySocket.Connect(epHost_cn) End If If mySocket.Connected Then SSL_library_init() sslCtx = SSL_CTX_new(SSLv23_client_method()) If (SSL_CTX_use_certificate_file(sslCtx, certificate, SSL_FILETYPE_PEM)) Then If SSL_CTX_use_PrivateKey_file(sslCtx, PrivateKey, SSL_FILETYPE_PEM) Then If SSL_CTX_check_private_key(sslCtx) Then Else mySocket.Close() Retu