github.com/sagernet/sing-box@v1.9.0-rc.20/docs/manual/proxy-protocol/shadowsocks.md (about) 1 --- 2 icon: material/send 3 --- 4 5 # Shadowsocks 6 7 As the most well-known Chinese-made proxy protocol, 8 Shadowsocks exists in multiple versions, 9 but only AEAD 2022 ciphers TCP with multiplexing is recommended. 10 11 | Ciphers | Specification | Cryptographic Security | Binary Characteristics | Active Detect Hiddenness | 12 |----------------|------------------------------------------------------------|------------------------|------------------------|--------------------------| 13 | Stream Ciphers | [shadowsocks.org](https://shadowsocks.org/doc/stream.html) | :material-alert: | :material-alert: | :material-alert: | 14 | AEAD | [shadowsocks.org](https://shadowsocks.org/doc/aead.html) | :material-check: | :material-alert: | :material-alert: | 15 | AEAD 2022 | [shadowsocks.org](https://shadowsocks.org/doc/sip022.html) | :material-check: | :material-check: | :material-help: | 16 17 ## :material-text-box-check: Password Generator 18 19 | For `2022-blake3-aes-128-gcm` cipher | For other ciphers | Action | 20 |--------------------------------------|-------------------------------|-----------------------------------------------------------------| 21 | <code id="password_16"><code> | <code id="password_32"><code> | <button class="md-button" onclick="generate()">Refresh</button> | 22 23 <script> 24 function generatePassword(element, length) { 25 const array = new Uint8Array(length); 26 window.crypto.getRandomValues(array); 27 document.getElementById(element).textContent = btoa(String.fromCharCode.apply(null, array)); 28 } 29 function generate() { 30 generatePassword("password_16", 16); 31 generatePassword("password_32", 32); 32 } 33 generate(); 34 </script> 35 36 ## :material-server: Server Example 37 38 === ":material-account: Single-user" 39 40 ```json 41 { 42 "inbounds": [ 43 { 44 "type": "shadowsocks", 45 "listen": "::", 46 "listen_port": 8080, 47 "network": "tcp", 48 "method": "2022-blake3-aes-128-gcm", 49 "password": "<password>", 50 "multiplex": { 51 "enabled": true 52 } 53 } 54 ] 55 } 56 ``` 57 58 === ":material-account-multiple: Multi-user" 59 60 ```json 61 { 62 "inbounds": [ 63 { 64 "type": "shadowsocks", 65 "listen": "::", 66 "listen_port": 8080, 67 "network": "tcp", 68 "method": "2022-blake3-aes-128-gcm", 69 "password": "<server_password>", 70 "users": [ 71 { 72 "name": "sekai", 73 "password": "<user_password>" 74 } 75 ], 76 "multiplex": { 77 "enabled": true 78 } 79 } 80 ] 81 } 82 ``` 83 84 ## :material-cellphone-link: Client Example 85 86 === ":material-account: Single-user" 87 88 ```json 89 { 90 "outbounds": [ 91 { 92 "type": "shadowsocks", 93 "server": "127.0.0.1", 94 "server_port": 8080, 95 "method": "2022-blake3-aes-128-gcm", 96 "password": "<pasword>", 97 "multiplex": { 98 "enabled": true 99 } 100 } 101 ] 102 } 103 ``` 104 105 === ":material-account-multiple: Multi-user" 106 107 ```json 108 { 109 "outbounds": [ 110 { 111 "type": "shadowsocks", 112 "server": "127.0.0.1", 113 "server_port": 8080, 114 "method": "2022-blake3-aes-128-gcm", 115 "password": "<server_pasword>:<user_password>", 116 "multiplex": { 117 "enabled": true 118 } 119 } 120 ] 121 } 122 ```