2016年11月30日 星期三

[研究] ASUS P32V 與 Toshiba PROTEGE Z30-C 筆記型電腦比較

[研究] ASUS P32V 與 Toshiba PORTEGE Z30-C 筆記型電腦比較

2016-11-30

ASUS P32V Notebook 用了4年多 (民國101年底/西元2012年底),出問題了,換了一台 Toshiba PROTEGE Z30-C 用,做了一個簡單測試比較 (不嚴謹)。

項目 ASUS P32V /13.3"Toshiba PORTEGE Z30-C
 CPUIntel Core i5-3210M CPU@2.50GHz Intel Core i5-6200U@2.30GHz 
 RAM4GB 8 GB
OSWindows 7 Enterprise x86 Windows 7 Pro  x64
 LCD1366x7681366x768
Storage500 GB HDD256 GB SDD

換機後,可用的儲存空間變小了,預設沒有 USB 外接光碟機可用,LCD 可視尺寸好像變小 (?),但從 HDD 變成 SDD,速度提升很多。

********************************************************************************
(下圖) ASUS P32V


(下圖) Toshiba PROTEGE Z30-C


********************************************************************************
(下圖) ASUS P32V

(下圖) Toshiba PROTEGE Z30-C

********************************************************************************

(下圖) ASUS P32V


(下圖) Toshiba PROTEGE Z30-C


********************************************************************************
(下圖) ASUS P32V


(下圖) Toshiba PROTEGE Z30-C


********************************************************************************
(下圖) ASUS P32V


(下圖) Toshiba PROTEGE Z30-C

(完)

2016年11月25日 星期五

[研究] web.config 的 customErrors 設定實測

[研究] web.config 的 customErrors 設定實際測試

2016-11-25

環境:Visual Studio 2015 with Update 3 + .NET 4.5 + WebForm

測試程式

Default.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication1.Default" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox><br />
        <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox><br />
        <asp:Button ID="Button1" runat="server" Text="SUM" OnClick="Button1_Click" /><br />
        <asp:Label ID="Label1" runat="server" Text=""></asp:Label><br />
    </div>
    </form>
</body>
</html>


Default.aspx.cs
using System;
namespace WebApplication1
{
    public partial class Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
        }
        protected void Button1_Click(object sender, EventArgs e)
        {
            int num1, num2, num3;
            //Int32.TryParse(TextBox1.Text, out num1);
            //Int32.TryParse(TextBox2.Text, out num2);
            num1 = Convert.ToInt32(TextBox1.Text);
            num2 = Convert.ToInt32(TextBox2.Text);
            num3 = num1 + num2;
            Label1.Text = num3.ToString();
        }
    }
}


********************************************************************************

web.config,只摘要 customErrors 部分
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.web>
    <customErrors mode="Off" />
  </system.web>
</configuration>

Off : 開發人員看細節
On : 不顯示詳細錯誤細節
RemoteOnly : 設定遠端看到的

(下圖) 遠端看到(一般使用者)、本機看到(開發維護人員)看到畫面
因為 Off,沒有客製畫面,大家都看到完整錯誤訊息。


********************************************************************************
測試:
1.變更 web.config 設定
2.輸入 1 和 x 去觸發錯誤
********************************************************************************

web.config,只摘要 customErrors 部分
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.web>
    <customErrors mode="On" />
  </system.web>
</configuration>

(下圖) 遠端(一般使用者)、本機(開發維護人員)看到畫面
因為 On,表示有客製畫面,但是實際沒有設定客製錯誤訊息網頁。


********************************************************************************
web.config,只摘要 customErrors 部分
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.web>
    <customErrors mode="On" defaultRedirect="mycustompage.htm"/>
  </system.web>
</configuration>

(下圖) 遠端(一般使用者)、本機(開發維護人員)看到畫面
因為 On,表示有客製畫面。


********************************************************************************

web.config,只摘要 customErrors 部分
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.web>
    <customErrors mode="RemoteOnly />
  </system.web>
</configuration>

(下圖) 本機(開發維護人員)看到畫面



(下圖) 遠端(一般使用者)看到畫面



********************************************************************************
web.config,只摘要 customErrors 部分
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.web>
    <customErrors mode="RemoteOnly" defaultRedirect="mycustompage.htm"/>
  </system.web>
</configuration>

(下圖) 本機(開發維護人員)看到畫面



(下圖) 遠端(一般使用者)看到畫面

更進階還可以這樣用

<customErrors mode="RemoteOnly"   defaultRedirect="GenericErrorPage.htm">
  <error statusCode="403" redirect="NoAccess.htm" />
  <error statusCode="404" redirect="FileNotFound.htm" />
</customErrors>

(完)

相關

如何使用 Visual C# .NET 在 ASP.NET 中建立自訂的錯誤報告頁面
https://support.microsoft.com/zh-tw/kb/306355

ASP.NET Web 組態設定方針
https://msdn.microsoft.com/zh-tw/library/ff400235(v=vs.100).aspx

customErrors 項目 (ASP.NET 設定結構描述)
https://msdn.microsoft.com/zh-tw/library/h0hfz6fc(v=vs.100).aspx

Top 10 Application Security Vulnerabilities in Web.config Files - Part One
3 May 2007
http://www.codeproject.com/Articles/18625/Top-Application-Security-Vulnerabilities-in-Web
Top 10 Application Security Vulnerabilities in Web.config Files - Part Two
http://www.codeproject.com/Articles/18882/Top-Application-Security-Vulnerabilities-in-W


2016年11月24日 星期四

[研究] 替 SQL Server 2016 安裝 北風(NorthWind)範例資料庫

[研究] 替 SQL Server 2016 安裝 北風(NorthWind)範例資料庫

2016-11-24

方法一 (失敗)

Northwind and pubs Sample Databases for SQL Server 2000















方法二 (失敗)




這是因為 SQL Server 2012 開始不支援 sp_dboption
其實雖然執行失敗,但是資料庫仍有產生。

方法三 (成功)

https://northwinddatabase.codeplex.com/












(完)

2016年11月22日 星期二

[研究][C#] AES-256-CBC

[研究][C#] AES-256-CBC

2016-11-02

Walkthrough: Creating a Cryptographic Application
https://msdn.microsoft.com/en-us/library/bb397867(v=vs.110).aspx

[C#] 與Android共舞-AES 加解密(C# 端)
http://no2don.blogspot.com/2013/03/c-android-aes-c.html

How to decrypt an AES-256-CBC encrypted string
http://stackoverflow.com/questions/20297973/how-to-decrypt-an-aes-256-cbc-encrypted-string

RSACryptoServiceProvider 建構函式(CspParameters)
https://msdn.microsoft.com/zh-tw/library/ca5htw4f(v=vs.110).aspx

.NET中非對稱加密RSA算法的密鑰保存
http://fecbob.pixnet.net/blog/post/38895271-.net%E4%B8%AD%E9%9D%9E%E5%AF%B9%E7%A7%B0%E5%8A%A0%E5%AF%86rsa%E7%AE%97%E6%B3%95%E7%9A%84%E5%AF%86%E9%92%A5%E4%BF%9D%E5%AD%98

AES加密CBC模式兼容互通四种编程语言平台【PHP、Javascript、Java、C#】
http://www.cnblogs.com/lonelyxmas/p/4249856.html

[C#.NET] 字串及檔案 利用 DES / AES 演算法加解密
https://dotblogs.com.tw/yc421206/archive/2012/04/18/71609.aspx

如何使用 Visual C# 加密和解密檔案
https://support.microsoft.com/zh-tw/kb/307010


(完)

[研究] [C#] AES-256-CBC 加密字串、解密字串

[研究] [C#] AES-256-CBC 加密字串、解密字串

2016-11-22


Visual Studio 2015 with Update 3
WinForm 程式

Form1.cs

using System;
using System.Security.Cryptography;
using System.Text;
using System.Windows.Forms;

namespace AES256CBCEncryptString
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            textBox1.Text = "1234567812345678"; // key, iv
            textBox2.Text = "1234567812345678"; // key, iv
            richTextBox1.Text = "Test String";
        }
        private void button1_Click(object sender, EventArgs e)
        {
            String encryptData = Encrypt(richTextBox1.Text, textBox1.Text, textBox2.Text);
            richTextBox2.Text = encryptData;

            String decryptData = Decrypt(richTextBox2.Text, textBox1.Text, textBox2.Text);
            richTextBox3.Text = decryptData;
        }
        public static string Encrypt(string toEncrypt, string key, string iv)
        {
            byte[] keyArray = UTF8Encoding.UTF8.GetBytes(key);
            byte[] ivArray = UTF8Encoding.UTF8.GetBytes(iv);
            byte[] toEncryptArray = UTF8Encoding.UTF8.GetBytes(toEncrypt);

            //進階加密標準(英語:Advanced Encryption Standard,縮寫:AES)
            //https://zh.wikipedia.org/wiki/%E9%AB%98%E7%BA%A7%E5%8A%A0%E5%AF%86%E6%A0%87%E5%87%86

            // RijndaelManaged 類別
            // https://msdn.microsoft.com/zh-tw/library/system.security.cryptography.rijndaelmanaged(v=vs.110).aspx

            //區塊(Block)密碼工作模式(mode of operation)
            //https://zh.wikipedia.org/wiki/%E5%9D%97%E5%AF%86%E7%A0%81%E7%9A%84%E5%B7%A5%E4%BD%9C%E6%A8%A1%E5%BC%8F

            RijndaelManaged rDel = new RijndaelManaged();
            rDel.KeySize = 256;
            rDel.Key = keyArray;
            rDel.IV = ivArray;  // 初始化向量 initialization vector (IV)
            rDel.Mode = CipherMode.CBC; // 密碼分組連結(CBC,Cipher-block chaining)模式
            rDel.Padding = PaddingMode.Zeros;

            ICryptoTransform cTransform = rDel.CreateEncryptor();
            byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);

            return Convert.ToBase64String(resultArray, 0, resultArray.Length);
        }

        public static string Decrypt(string toDecrypt, string key, string iv)
        {
            byte[] keyArray = UTF8Encoding.UTF8.GetBytes(key);
            byte[] ivArray = UTF8Encoding.UTF8.GetBytes(iv);
            byte[] toEncryptArray = Convert.FromBase64String(toDecrypt);

            RijndaelManaged rDel = new RijndaelManaged();
            rDel.KeySize = 256;
            rDel.Key = keyArray;
            rDel.IV = ivArray;
            rDel.Mode = CipherMode.CBC;
            rDel.Padding = PaddingMode.Zeros;

            ICryptoTransform cTransform = rDel.CreateDecryptor();
            byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);

            return UTF8Encoding.UTF8.GetString(resultArray);
        }


    }
}



(完)

2016年11月19日 星期六

[研究] 「磁碟清理」工具

[研究] 「磁碟清理」工具

2016-11-19

Windows 7 提供了「開始/所有程式/附屬應用程式/系統工具/磁碟清理」可供使用。






(下圖) 但是「磁碟清理」工具 還有進階設定和使用方法,設定方法 cleanmgr /sageset:99,sage 是「睿智的」意思。







(下圖) cleanmgr /sageset:99只是進階設定,當您勾選完後,還要配合cleanmgr /sagerun:99來清理。


(完)