mirror of
				https://github.com/bolucat/Archive.git
				synced 2025-11-01 04:13:16 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			99 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			99 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using System;
 | |
| using System.Collections.Generic;
 | |
| 
 | |
| namespace Shadowsocks.Encryption.Stream
 | |
| {
 | |
|     class PlainEncryptor
 | |
|         : EncryptorBase, IDisposable
 | |
|     {
 | |
|         const int CIPHER_NONE = 1;
 | |
| 
 | |
|         private static Dictionary<string, EncryptorInfo> _ciphers = new Dictionary<string, EncryptorInfo> {
 | |
|             { "plain", new EncryptorInfo("PLAIN", 0, 0, CIPHER_NONE) },
 | |
|             { "none", new EncryptorInfo("PLAIN", 0, 0, CIPHER_NONE) }
 | |
|         };
 | |
| 
 | |
|         public PlainEncryptor(string method, string password) : base(method, password)
 | |
|         {
 | |
|         }
 | |
| 
 | |
|         public static List<string> SupportedCiphers()
 | |
|         {
 | |
|             return new List<string>(_ciphers.Keys);
 | |
|         }
 | |
| 
 | |
|         protected Dictionary<string, EncryptorInfo> getCiphers()
 | |
|         {
 | |
|             return _ciphers;
 | |
|         }
 | |
| 
 | |
|         #region TCP
 | |
| 
 | |
|         public override void Encrypt(byte[] buf, int length, byte[] outbuf, out int outlength)
 | |
|         {
 | |
|             Buffer.BlockCopy(buf, 0, outbuf, 0, length);
 | |
|             outlength = length;
 | |
|         }
 | |
| 
 | |
|         public override void Decrypt(byte[] buf, int length, byte[] outbuf, out int outlength)
 | |
|         {
 | |
|             Buffer.BlockCopy(buf, 0, outbuf, 0, length);
 | |
|             outlength = length;
 | |
|         }
 | |
| 
 | |
|         #endregion
 | |
| 
 | |
|         #region UDP
 | |
| 
 | |
|         public override void EncryptUDP(byte[] buf, int length, byte[] outbuf, out int outlength)
 | |
|         {
 | |
|             Buffer.BlockCopy(buf, 0, outbuf, 0, length);
 | |
|             outlength = length;
 | |
|         }
 | |
| 
 | |
|         public override void DecryptUDP(byte[] buf, int length, byte[] outbuf, out int outlength)
 | |
|         {
 | |
|             Buffer.BlockCopy(buf, 0, outbuf, 0, length);
 | |
|             outlength = length;
 | |
|         }
 | |
| 
 | |
|         #endregion
 | |
| 
 | |
| 
 | |
|         #region IDisposable
 | |
| 
 | |
|         private bool _disposed;
 | |
| 
 | |
|         // instance based lock
 | |
|         private readonly object _lock = new object();
 | |
| 
 | |
|         public override void Dispose()
 | |
|         {
 | |
|             Dispose(true);
 | |
|             GC.SuppressFinalize(this);
 | |
|         }
 | |
| 
 | |
|         ~PlainEncryptor()
 | |
|         {
 | |
|             Dispose(false);
 | |
|         }
 | |
| 
 | |
|         protected virtual void Dispose(bool disposing)
 | |
|         {
 | |
|             lock (_lock)
 | |
|             {
 | |
|                 if (_disposed) return;
 | |
|                 _disposed = true;
 | |
|             }
 | |
| 
 | |
|             if (disposing)
 | |
|             {
 | |
|                 // free managed objects
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         #endregion
 | |
| 
 | |
|     }
 | |
| }
 | 
![github-action[bot]](/assets/img/avatar_default.png)