精選文章

bcp大量匯出與匯入資料庫資料方法

--匯出-- bcp "select * from [資料庫名稱].[dbo].[資料表名稱]" queryout 匯出檔案名稱.txt -w -U "使用者帳號" -P "使用者密碼" " ...

2019年1月31日 星期四

MS SQL 基本T-SQL語法

新增Table欄位
T-SQL
ALTER TABLE [TableName] ADD [ColumnName] [DataType] Default [Value]
T-SQL 範例1
ALTER TABLE Product ADD ProductName NVARCHAR(50) DEFAULT NULL
T-SQL 範例2
ALTER TABLE Product ADD ProductName NVARCHAR(50) NULL
更改欄位大小型態
T-SQL
ALTER TABLE [TableName] ALTER COLUMN [ColumnName] [DataType]
T-SQL 範例
ALTER TABLE Products ALTER COLUMN ProductName VARCHAR(30)

2019年1月25日 星期五

JS簡單的加密解密方法

說明:JS简单的加密解密方法

字符串加密
方法
  1. /**
  2. * encrypto 加密程序
  3. * @param {Strng} str 待加密字符串
  4. * @param {Number} xor 异或值
  5. * @param {Number} hex 加密后的进制数
  6. * @return {Strng} 加密后的字符串
  7. */
  8. function encrypto( str, xor, hex ) {
  9. if ( typeof str !== 'string' || typeof xor !== 'number' || typeof hex !== 'number') {
  10. return;
  11. }
  12.  
  13. let resultList = [];
  14. hex = hex <= 25 ? hex : hex % 25;
  15.  
  16. for ( let i=0; i < str.length; i++ ) {
  17. // 提取字符串每个字符的ascll码
  18. let charCode = str.charCodeAt(i);
  19. // 进行异或加密
  20. charCode = (charCode * 1) ^ xor;
  21. // 异或加密后的字符转成 hex 位数的字符串
  22. charCode = charCode.toString(hex);
  23. resultList.push(charCode);
  24. }
  25. let splitStr = String.fromCharCode(hex + 97);
  26. let resultStr = resultList.join( splitStr );
  27. return resultStr;
  28. }
  29.  

字符串解密
方法
  1. /**
  2. * decrypto 解密程序
  3. * @param {Strng} str 待加密字符串
  4. * @param {Number} xor 异或值
  5. * @param {Number} hex 加密后的进制数
  6. * @return {Strng} 加密后的字符串
  7. */
  8. function decrypto( str, xor, hex ) {
  9. if ( typeof str !== 'string' || typeof xor !== 'number' || typeof hex !== 'number') {
  10. return;
  11. }
  12. let strCharList = [];
  13. let resultList = [];
  14. hex = hex <= 25 ? hex : hex % 25;
  15. // 解析出分割字符
  16. let splitStr = String.fromCharCode(hex + 97);
  17. // 分割出加密字符串的加密后的每个字符
  18. strCharList = str.split(splitStr);
  19.  
  20. for ( let i=0; i < strCharList.length; i++ ) {
  21. // 将加密后的每个字符转成加密后的ascll码
  22. let charCode = parseInt(strCharList[i], hex);
  23. // 异或解密出原字符的ascll码
  24. charCode = (charCode * 1) ^ xor;
  25. let strChar = String.fromCharCode(charCode);
  26. resultList.push(strChar);
  27. }
  28. let resultStr = resultList.join('');
  29. return resultStr;
  30. }
  31.  

測試
方法
  1. let s1 = 'hello world';
  2.  
  3. // 加密
  4. s1 = encrypto(s1, 123, 25);
  5. console.log('s1=', s1);
  6. // s1= jz15znznzkz3gzczkz9znz16
  7.  
  8. // 解密
  9. let s2 = decrypto(s1, 123, 25);
  10. console.log('s2=', s2);
  11. // s2= hello world

C#的解密方式
"ToInt32的基底,必須是 2、8、10 或 16"
方法
  1. private string decrypto(string str)
  2. {
  3. string [] strCharList;
  4. List resultList=new List();
  5. // 解析出分割字符
  6. char splitStr = (char)(16 + 97);
  7. // 分割出加密字符串的加密後的每個字符
  8. strCharList = str.Split(splitStr);
  9. for (int i = 0; i < strCharList.Length; i++)
  10. {
  11. // 將加密後的每個字符轉成加密後的ascll碼
  12. int charCode = Convert.ToInt32(strCharList[i],16);
  13. // 異或解密出原字符的ascll碼
  14. charCode = (charCode * 1) ^ 123;
  15. char strChar = (char)(charCode);
  16. resultList.Add(strChar);
  17. }
  18. string resultStr = string.Join("", resultList);
  19. return resultStr;
  20. }