雖然這篇c#網頁範例鄉民發文沒有被收入到精華區:在c#網頁範例這個話題中,我們另外找到其它相關的精選爆讚文章
在 c#網頁範例產品中有23篇Facebook貼文,粉絲數超過3,460的網紅Taipei Ethereum Meetup,也在其Facebook貼文中提到, 📜 [專欄新文章] [ZKP 讀書會] Trust Token Browser API ✍️ Yuren Ju 📥 歡迎投稿: https://medium.com/taipei-ethereum-meetup #徵技術分享文 #使用心得 #教學文 #medium Trust Token API ...
同時也有150部Youtube影片,追蹤數超過4萬的網紅吳老師教學部落格,也在其Youtube影片中提到,從EXCEL VBA到Python開發第1次上課(問卷結果&課程綱要與下載懶人包&ECLIPSE連結PYTHON與建立專案&修改語系與轉型與環境設定&年齡邏輯判斷) 01_課前問卷與下載懶人包 02_課程說明與開啟ECLIPSE 03_在ECLIPSE中設定PYTHON路徑 04_建立專案與模組並...
c#網頁範例 在 光頭老爸 Instagram 的精選貼文
2020-10-08 06:46:02
#一日旅遊大使 #文末抽住宿券 #墾丁H會館 PAPA一日旅遊大使 x 易遊網 很開心收到 @eztravel.tw 的合作邀約~每次台灣訂房我們幾乎都在易遊網訂!真的覺得好用又方便!所以真心推薦大家!現在大家出去玩防疫要做好👍🏻保護自己也保護別人哦😊 (因為光頭出去玩也是我們在訂啦😂) 現在易遊...
c#網頁範例 在 工具王 阿璋 Instagram 的最讚貼文
2021-04-04 20:32:18
【#程式教學】「想學會寫程式,必先練此功!」 新手必備✨C語言懶人包✨ 大家千呼萬喚的C語言懶人包來啦🤟🏻一起看下去!!!! 1️⃣C語言:入門基本功💪🏻 C語言是個超~強大的程式語言,C語言靈活高效的運算和豐富的功能性,以及可以跨平台使用的特點,成為了近30年來用途最為廣泛的語言。...
-
c#網頁範例 在 吳老師教學部落格 Youtube 的最讚貼文
2020-02-11 00:23:29從EXCEL VBA到Python開發第1次上課(問卷結果&課程綱要與下載懶人包&ECLIPSE連結PYTHON與建立專案&修改語系與轉型與環境設定&年齡邏輯判斷)
01_課前問卷與下載懶人包
02_課程說明與開啟ECLIPSE
03_在ECLIPSE中設定PYTHON路徑
04_建立專案與模組並撰寫程式
05_編輯器字型放大縮小與算術運算子
06_修改編碼為UTF8與轉型為字串
07_下載PYTHON與ECLISPE手動建立環境與變數型態
08_型別轉換與串列與脫逸字元
09_流程控制撰寫年齡判斷程式
完整教學
http://goo.gl/aQTMFS
吳老師教學論壇
http://www.tqc.idv.tw/
教學論壇(之後課程會放論壇上課學員請自行加入):
https://groups.google.com/forum/#!forum/scu_python109
懶人包:
EXCEL函數與VBA http://terry28853669.pixnet.net/blog/category/list/1384521
EXCEL VBA自動化教學 http://terry28853669.pixnet.net/blog/category/list/1384524
課程簡介:入門
建置Python開發環境
基本語法與結構控制
迴圈、資料結構及函式
VBA重要函數到Python
檔案處理
資料庫處理
課程簡介:進階
網頁資料擷取與分析、Python網頁測試自動化、YouTube影片下載器
處理 Excel 試算表、處理 PDF 與 Word 文件、處理 CSV 檔和 JSON 資料
實戰:PM2.5即時監測顯示器、Email 和文字簡訊、處理影像圖片、以 GUI 自動化來控制鍵盤和滑鼠
上課用書:
參考書目
Python初學特訓班(附250分鐘影音教學/範例程式)
作者: 鄧文淵/總監製, 文淵閣工作室/編著?
出版社:碁峰? 出版日期:2016/11/29
Python程式設計入門
作者:葉難
ISBN:9789864340057
出版社:博碩文化
出版日期:2015/04/02
吳老師 109/2/11
EXCEL,VBA,Python,自強工業基金會,EXCEL,VBA,函數,程式設計,線上教學,PYTHON安裝環境 -
c#網頁範例 在 吳老師教學部落格 Youtube 的最讚貼文
2019-10-31 21:29:01EXCEL VBA與資料庫(進階107)第6單元用樞紐分析表分割資料&從雲端硬碟更新資料&錄製巨集與修改VBA程式&將發布網頁改為CSV與VBA程式修改&臺北市公有零售市場行情下載&CSV程式精簡與住宅竊盜分析&利用台銀官網的CSV檔抓取資料
上課內容:
01_重點回顧與用樞紐分析表分割資料
02_從雲端硬碟更新資料說明
03_錄製巨集與修改VBA程式
04_將發布網頁改為CSV與VBA程式修改
05_總結雲端硬碟下載網頁與CSV資料
06_臺北市公有零售市場行情下載
07_CSV程式精簡與住宅竊盜分析
08_利用台銀官網的CSV檔抓取資料
完整影音
http://goo.gl/aQTMFS
教學論壇:
https://groups.google.com/forum/#!forum/scu_excel_vba2_107
與前幾期的課程雖然用的是相同的範例,但最大的不同在:
1.除了解說建函數公式,並將之轉成自訂函數,把複雜的公式變簡單。
2.如何將複雜的公式變成簡單的按鈕,按下按鈕就自動完成工作。
內容主要分成:
單元01_資料拆解相關(VBA基礎)
單元02_表單設計
單元03_輸入自動化與表單與資料庫
單元04_工作表合併
單元05_資料查詢(篩選與分割工作表)
單元06_批次查詢
單元07_從雲端硬碟下載資料
單元08_下載網路資料
單元09_工作表相關
單元10_活頁簿與檔案處理(工作表分割與合併活頁簿)
單元11_表格與圖表處理(自動繪製圖表)
單元12_圖案處理(快速匯入圖片到EXCEL)
有講義與範例和完成的畫面公式與程式碼,
只要按照每周的順序學習,學會EXCEL VBA自動化絕非難事,
優點:
1.可非線性學習:可按照自己最不熟的部分多次學習。
2.可反覆學習:有疑問可以多次聽講,保證學的會。
3.可攜帶學習:只要有瀏覽器就可以播放SWF檔,MAC電腦也沒問題。
上課參考用書:
看!就是比你早下班-50個ExcelVBA高手問題解決法
作者:楊玉文 出版社:松崗
Excel VBA一點都不難:一鍵搞定所有報表
作者:?Excel Home
出版社:博碩
課程理念:
1.以循序漸進的方式, 透過詳細的說明和實用的Excel VBA範例, 逐步了解整個 VBA 的架構與輪廓,進而學習 VBA 變數、函式及邏輯的觀念, 即使沒有任何程式設計基礎, 也能自己親手撰寫 VBA 程序來提昇工作效率, 晉身職場 Excel 高手! 2.進而解說EXCEL與資料庫的結合,將EXCEL當成資料庫來使用,結合函數、VBA等更深入的功能,讓資料處理和分析的應用更上層樓。 3.將結合GOOGLE雲端試算表,教您如何將EXCEL函數雲端化與網路化。
更多EXCEL VBA連結:
01_EXCEL函數與VBA http://terry28853669.pixnet.net/blog/category/list/1384521
02_EXCEL VBA自動化教學 http://terry28853669.pixnet.net/blog/category/list/1384524
吳老師 2018/10/8
EXCEL,VBA,函數東吳進修推廣部,EXCEL,VBA,函數,程式設計,線上教學,excel,vba,教學,excel,vba指令教學,vba範例教學excel,,excel,vba教學視頻,excel函數教學,excel函數說明,excel函數應用 -
c#網頁範例 在 吳老師教學部落格 Youtube 的最讚貼文
2018-12-04 10:24:10文大Python程式入門或證照第1次課程介紹與安裝環境&下載ECLIPSE&設定工作區&安裝PYTHON外掛&編輯環境自行放大與修改編碼方式與轉型&輸出資料型別與型別轉換練習&變數的型別與轉換&證照考題
上課內容:
01_課程介紹與安裝環境
02_下載ECLIPSE說明
03_解壓縮ECLIPSE與設定工作區
04_安裝PYTHON外掛
05_設定PYTHON實體路徑與建立專案
06_編輯環境自行放大與修改編碼方式與轉型
07_輸出資料型別與型別轉換練習
08_變數的型別與轉換
09_證照考題題型說明
完整影音
http://goo.gl/aQTMFS
教學論壇(之後課程會放論壇上課學員請自行加入):
https://groups.google.com/forum/#!forum/pccu_python_2018_2
懶人包:
EXCEL函數與VBA http://terry28853669.pixnet.net/blog/category/list/1384521
EXCEL VBA自動化教學 http://terry28853669.pixnet.net/blog/category/list/1384524
TQC+Python證照目錄:
Python 第1類:基本程式設計
技能內容:變數與常數、指定敘述、標準輸入輸出、運算式、算術運算子、數學函式的應用、格式化的輸出Python 第2類:選擇敘述
技能內容:if、if...else、if…elif
Python 第3類:迴圈敘述
技能內容:while、for…in
Python 第4類:進階控制流程
技能內容:常用的控制結構、條件判斷、迴圈
Python 第5類:函式(Function)
技能內容:函式使用、傳遞參數、回傳資料、內建函式、區域變數與全域變數
Python 第6類:串列(List)的運作(一維、二維以及多維)
技能內容:串列的建立、串列的函式、串列參數傳遞、串列應用
Python 第7類:數組(Tuple)、集合(Set)以及詞典(Dictionary)
技能內容:數組、集合、詞典的建立、運作及應用
Python 第8類:字串(String)的運作
技能內容:字串的建立、字串的庫存函式、字串的應用
Python 第9類:檔案與異常處理
技能內容:文字I/O、檔案的建立、寫入資料與讀取資料、二進位I/O、編碼(Encoding)、異常處理
課程簡介:入門
建置Python開發環境
基本語法與結構控制
迴圈、資料結構及函式
VBA重要函數到Python
檔案處理
資料庫處理
課程簡介:進階
網頁資料擷取與分析、Python網頁測試自動化、YouTube影片下載器
處理 Excel 試算表、處理 PDF 與 Word 文件、處理 CSV 檔和 JSON 資料
實戰:PM2.5即時監測顯示器、Email 和文字簡訊、處理影像圖片、以 GUI 自動化來控制鍵盤和滑鼠
上課用書:
參考書目
Python初學特訓班(附250分鐘影音教學/範例程式)
作者: 鄧文淵/總監製, 文淵閣工作室/編著
出版社:碁峰? 出版日期:2016/11/29
吳老師 107/12/3
EXCEL,VBA,Python,文化推廣部,EXCEL,VBA,函數,程式設計,線上教學,PYTHON安裝環境
c#網頁範例 在 Taipei Ethereum Meetup Facebook 的最佳解答
📜 [專欄新文章] [ZKP 讀書會] Trust Token Browser API
✍️ Yuren Ju
📥 歡迎投稿: https://medium.com/taipei-ethereum-meetup #徵技術分享文 #使用心得 #教學文 #medium
Trust Token API 是一個正在標準化的瀏覽器 API,主要的目的是在保護隱私的前提下提供跨站授權 (Cross-domain authorization) 的功能,以前如果需要跨站追蹤或授權通常都使用有隱私疑慮的 Cookies 機制,而 Trust Token 則是希望在保護隱私的前提下完成相同的功能。
會在 ZKP (Zero-knowledge proof) 讀書會研究 Trust Token 主要是這個 API 採用了零知識證明來保護隱私,這也是這次讀書會中少見跟區塊鏈無關的零知識證明應用。
問題
大家應該都有點了一個產品的網頁後,很快的就在 Facebook 或是 Google 上面看到相關的廣告。但是產品網頁並不是在 Facebook 上面,他怎麼會知道我看了這個產品的頁面?
通常這都是透過 Cookie 來做跨網站追蹤來記錄你在網路上的瀏覽行為。以 Facebook 為例。
當使用者登入 Facebook 之後,Facebook 會透過 Cookie 放一段識別碼在瀏覽器裡面,當使用者造訪了有安裝 Facebook SDK 來提供「讚」功能的網頁時,瀏覽器在載入 SDK 時會再度夾帶這個識別碼,此時 Facebook 就會知道你造訪了特定的網頁並且記錄下來了。如此一來再搭配其他不同管道的追蹤方式,Facebook 就可以建構出特定使用者在網路上瀏覽的軌跡,從你的瀏覽紀錄推敲喜好,餵給你 Facebook 最想給你看的廣告了。
不過跨站追蹤也不是只能用在廣告這樣的應用上,像是 CDN (Content Delivery Network) 也是一個應用場景。CDN 服務 Cloudflare 提供服務的同時會利用 Captcha 先來確定進入網站的是不是真人或是機器人。而他希望使用者如果是真人時下次造訪同時也是採用 Cloudflare 服務的網站不要再跳出 Captcha 驗證訊息。
雖然 Cloudflare 也需要跨站驗證的功能來完成他們的服務,但是相較於 Google 或 Facebook 來說他們是比較沒那麼想知道使用者的隱私。有沒有什麼辦法可以保護使用者隱私的狀況下還能完成跨站驗證呢?
這就是今天要講的新 API: Trust Token。
Trust Token API - The Chromium Projects
Trust Token / Privacy Pass 簡介
Trust Token 其實是由 Privacy Pass 延伸而來。Privacy Pass 就是由 Cloudflare 所開發的實驗性瀏覽器延伸套件實作一個驗證機制,可以在不透漏過多使用者隱私的前提下實作跨站驗證。而 Trust Token 則是標準化的 Privacy Pass,所以兩個運作機制類似,但是實作方式稍有不同。
先看一下 Privacy Pass 是如何使用。因為這是實驗性的瀏覽器延伸套件所以看起來有點陽春,不過大致上還是可以了解整個概念。
以 hCaptcha 跟 Cloudflare 的應用為例,使用者第一次進到由 Cloudflare 提供服務的網站時,網站會跳出一些人類才可以解答的問題比如說「挑出以下是汽車的圖片」。
當使用者答對問題後,Cloudflare 會回傳若干組 blind token,這些 blind token 還會需要經過 unblind 後才會變成真正可以使用的 token,這個過程為 issue token。如上圖所示假設使用者這次驗證拿到了 30 個 token,在每次造訪由 Cloudflare 服務的網站時就會用掉一個 token,這個步驟稱為 redeem token。
但這個機制最重要的地方在於 Cloudflare 並無法把 issue token 跟 redeem token 這兩個階段的使用者連結在一起,也就是說如果 Alice, Bob 跟 Chris 都曾經通過 Captcha 測試並且獲得了 Token,但是在後續瀏覽不同網站時把 token 兌換掉時,Clouldflare 並無法區分哪個 token 是來自 Bob,哪個 token 是來自 Alice,但是只要持有這種 token 就代表持有者已經通過了 Captcha 的挑戰證明為真人。
但這樣的機制要怎麼完成呢?以下我們會透過多個步驟的例子來解釋如何達成這個目的。不過在那之前我們要先講一下 Privacy Pass 所用到的零知識證明。
零知識證明 (Zero-knowledge proof)
零知識證明是一種方法在不揭露某個祕密的狀態下,證明他自己知道那個秘密。
Rahil Arora 在 stackexchange 上寫的比喻我覺得是相對好理解的,下面簡單的翻譯一下:
假設 Alice 有超能力可以幾秒內算出樹木上面有幾片樹葉,如何在不告訴 Bob 超能力是怎麼運作並且也不告訴 Bob 有多少片葉子的狀況下證明 Alice 有超能力?我們可以設計一個流程來證明這件事情。
Alice 先把眼睛閉起來,請 Bob 選擇拿掉樹上的一片葉子或不拿掉。當 Alice 睜開眼睛的時候,告訴 Bob 他有沒有拿掉葉子。如果一次正確的話確實有可能是 Alice 幸運猜到,但是如果這個過程連續很多次時 Alice 真的擁有數葉子的超能力的機率就愈來愈高。
而零知識證明的原理大致上就是這樣,你可以用一個流程來證明你知道某個秘密,即使你不真的揭露這個秘密到底是什麼,以上面的例子來說,這個秘密就是超能力運作的方式。
以上就是零知識證明的概念,不過要完成零知識證明有很多各式各樣的方式,今天我們要介紹的是 Trust Token 所使用的零知識證明:DLEQ。
DLEQ (Discrete Logarithm Equivalence Proof)
說明一下以下如果小寫的變數如 c, s 都是純量 (Scalar),如果是大寫如 G, H則是橢圓曲線上面的點 (Point),如果是 vG 則一樣是點,計算方式則是 G 連續相加 v 次,這跟一般的乘法不同,有興趣可以程式前沿的《橢圓曲線加密演算法》一文解釋得比較詳細。
DLEQ 有一個前提,在系統中的所有人都知道公開的 G 跟 H 兩個點,此時以下等式會成立:
假設 Peggy 擁有一個秘密 s 要向 Victor 證明他知道 s 為何,並且在這個過程中不揭露 s 真正的數值,此時 Victor 可以產生一個隨機數 c 傳送給 Peggy,而 Peggy 則會再產生一個隨機數 v 並且產生 r,並且附上 vG, vH, sG, sH:
r = v - cs
所以 Victor 會得到 r, sG, sH, vG, vH 再加上他已經知道的 G, H。這個時候如果 Victor 計算出以下兩個等式就代表 Peggy 知道 s 的真正數值:
vG = rG + c(sG)vH = rH + c(sH)
我們舉第二個等式作為例子化簡:
vH = rH + c(sH) // 把 r 展開成 v - csvH = (v - cs)H + c(sH) // (v - cs)H 展開成 vH - csHvH = vH - c(sH) + c(sH) // 正負 c(sH) 消掉vH = vH
這樣只有 Peggy 知道 s 的狀況下才能給出 r,所以這樣就可以證明 Peggy 確實知道 s。
從簡易到實際的情境
Privacy Pass 網站上透過了循序漸進的七種情境從最簡單的假設到最後面實際使用的情境來講解整個機制是怎麼運作的。本文也用相同的方式來解釋各種情境,不過前面的例子就會相對比較天真一點,就請大家一步步的往下看。
基本上整個過程是透過一種叫做 Blind Signature 的方式搭配上零知識證明完成的,以下參與的角色分為 Client 與 Server,並且都會有兩個階段 issue 與 redeem token。
Scenario 1
如果我們要設計一個這樣可以兌換 token 來確認身分的系統,其中有一個方法是透過橢圓曲線 (elliptic curve) 完成。Client 挑選一個在橢圓曲線上的點 T 並且傳送給 Server,Server 收到後透過一個只有 Server 知道的純量 (scalar) s 對 T 運算後得到 sT 並且回傳給 Client,這個產生 sT 的過程稱為 Sign Point,不過實際上運作的原理就是橢圓曲線上的連續加法運算。
SignPoint(T, s) => sT
等到 Client 需要兌換時只要把 T 跟 sT 給 Server,Server 可以收到 T 的時候再 Sign Point 一次看看是不是 sT 就知道是否曾經 issue 過這個 token。
Issue
以下的範例,左邊都是 Client, 右邊都是 Server。 -> 代表 Client 發送給 Server,反之亦然。
// Client 發送 T 給 Server, 然後得到 sT
T -> <- sT
Redeem
// Client 要 redeem token 時,傳出 T 與 sT
T, sT ->
問題:Linkability
因為 Server 在 issue 的時候已經知道了 T,所以基本上 Server 可以透過這項資訊可以把 issue 階段跟 redeem 階段的人連結起來進而知道 Client 的行為。
Scenario 2
要解決上面的問題,其中一個方法是透過 Blind Signature 達成。Client 不送出 T,而是先透過 BlindPoint 的方式產生 bT 跟 b,接下來再送給 Server bT。Server 收到 bT 之後,同樣的透過 Sign Point 的方式產生結果,不一樣的地方是情境 1 是用 T,而這邊則用 bT 來作 Sign Point,所以得出來的結果是 s(bT)。
Client:BlindPoint(T) => (bT, b)
Server:SignPoint(bT, s) => sbT
而 Blind Signature 跟 Sign Point 具備了交換律的特性,所以得到 s(bT) 後可以透過原本 Client 已知的 b 進行 Unblind:
UnblindPoint(sbT, b) => sT
這樣一來在 Redeem 的時候就可以送出 T, sT 給 Server 了,而且透過 SignPoint(T, s) 得出結果 sT’ 如果符合 Client 傳來的 sT 就代表確實 Server 曾經簽過這個被 blind 的點,同時因為 T 從來都沒有送到 Server 過,所以 Server 也無法將 issue 與 redeem 階段的 Client 連結在一起。
Issue
bT -> <- s(bT)
Redeem
T, sT ->
問題:Malleability
以上的流程其實也有另外一個大問題,因為有交換律的關係,當 Client 透過一個任意值 a 放入 BlindPoint 時產生的 a(sT) 就會等於 s(aT):
BlindPoint(sT) => a(sT), a// a(sT) === s(aT)
此時如果將 aT 跟 s(aT) 送給 Server Redeem,此時因為
SignPoint(aT, s) => s(aT)
所以就可以兌換了,這樣造成 Client 可以無限地用任意數值兌換 token。
Scenario 3
這次我們讓 Client 先選擇一個純數 t,並且透過一種單向的 hash 方式來產生一個在橢圓曲線上的點 T,並且在 redeem 階段時原本是送出 T, sT 改成送出 t, sT。
因為 redeem 要送出的是 t,上個情境時透過任意數 a 來產生 s(aT) 的方法就沒辦法用了,因為 t 跟 sT 兩個參數之間並不是單純的再透過一次 BlindPoint() 就可以得到,所以就沒辦法無限兌換了。
Issue
T = Hash(t) bT -> <- sbT
Redeem
t, sT ->
問題:Redemption hijacking
在這個例子裏面,Client 其實是沒有必要傳送 sT 的,因為 Server 僅需要 t 就可以計算出 sT,額外傳送 sT 可能會導致潛在的 Redemption hijacking 問題,如果在不安全的通道上傳輸 t, sT 就有可能這個 redemption 被劫持作為其他的用途。
不過在網站上沒講出實際上要怎麼利用這個問題,但是少傳一個可以計算出來的資料總是好的。Client 只要證明他知道 sT 就好,而這可以透過 HMAC (Hash-based Message Authentication Code) 達成。
Scenario 4
步驟跟前面都一樣,唯一不一樣的地方是 redeem 的時候原本是傳 t, sT,現在則改傳 t, M, HMAC(sT, M),如果再介紹 HMAC 篇幅會太大,這邊就不解釋了,但可以是作是一個標準的 salt 方式讓 Hash 出來的結果不容易受到暴力破解。
這樣的特性在這個情境用很適合,因為 Server 透過 t 就可以計算出 sT,透過公開傳遞的 M 可以輕易地驗證 client 端是否持有 sT。
Issue
T = Hash(t) bT -> <- sbT
Redeem
t, M, HMAC(sT, M) ->
問題:Tagging
這邊的問題在於 Server 可以在 issue 階段的時候用不一樣的 s1, s2, s3 等來發出不一樣的 sT’,這樣 Server 在 Redeem 階段就可以得知 client 是哪一個 s。所以 Server 需要證明自己每次都用同樣的 s 同時又不透漏 s 這個純亮。
要解決這個問題就需要用到前面我們講解的零知識證明 DLEQ 了。
Scenario 5
前面的 DLEQ 講解有提到,如果有 Peggy 有一個 s 秘密純量,我們可以透過 DLEQ 來證明 Peggy 知道 s,但是又不透漏 s 真正的數值,而在 Privacy Pass 的機制裡面,Server 需要證明自己每次都用 s,但是卻又不用揭露真正的數值。
在 Issue 階段 Client 做的事情還是一樣傳 bT 給 Server 端,但 Server 端的回應就不一樣了,這次 Server 會回傳 sbT 與一個 DLEQ 證明,證明自己正在用同一個 s。
首先根據 DLEQ 的假設,Server 會需要先公開一組 G, H 給所有的 Client。而在 Privacy Pass 的實作中則是公開了 G 給所有 Client,而 H 則改用 bT 代替。
回傳的時候 Server 要證明自己仍然使用同一個 s 發出 token,所以附上了一個 DLEQ 的證明 r = v - cs,Client 只要算出以下算式相等就可證明 Server 仍然用同一個 s (記住了 H 已經改用 bT 代替,此時 client 也有 sbT 也就是 sH):
vH = rH + c(sH) // H 換成 bTvbT = rbT + c(sbT) // 把 r 展開成 v - csvbT = (v - cs)bT + c(sbT) // (v - cs)bT 展開成 vbT - csbTvbT = vbT - c(sbT) + c(sbT) // 正負 c(sbT) 消掉vbT = vbT
這樣就可以證明 Server 依然用同一個 s。
Issue
T = Hash(t) bT -> <- sbT, DLEQ(bT:sbT == G:sG)
Redeem
t, M, HMAC(sT, M) ->
問題:only one redemption per issuance
到這邊基本上 Privacy Pass 的原理已經解釋得差不多了,不過這邊有個問題是一次只發一個 token 太少,應該要一次可以發多個 token。這邊我要跳過源文中提到的 Scenario 6 解釋最後的結果。
Scenario 7
由於一次僅產生一個 redeem token 太沒效率了,如果同時發很多次,每次都產生一個 proof 也不是非常有效率,而 DLEQ 有一個延伸的用法 “batch” 可以一次產生多個 token, 並且只有使用一個 Proof 就可以驗證所有 token 是否合法,這樣就可以大大的降低頻寬需求。
不過這邊我們就不贅述 Batch DLEQ 的原理了,文末我會提及一些比較有用的連結跟確切的源碼片段讓有興趣的人可以更快速的追蹤到源碼片段。
Issue
T1 = Hash(t1) T2 = Hash(t2)T3 = Hash(t3)b1T1 ->b2T2 ->b3T3 -> c1,c2,c3 = H(G,sG,b1T1,b2T2,b3T3,s(b1T1),s(b2T2),s(b3T3)) <- sb1T1 <- sb2T2 <- sb3T3 <- DLEQ(c1b1T1+c2b2T2+c3b3T3:s(c1b1T1+c2b2T2+c3b3T3) == G: sG)
Redeem
t1, M, HMAC(sT1, M) ->
結論
Privacy Token / Trust Token API 透過零知識證明的方式來建立了一個不需要透漏太多隱私也可以達成跟 cookie 相同效果的驗證方式,期待可以改變目前許多廣告巨頭透過 cookie 過分的追蹤使用者隱私的作法。
不過我在 Trust Token API Explainer 裡面看到這個協議裡面的延伸作法還可以夾帶 Metadata 進去,而協議制定的過程中其實廣告龍頭 Google 也參與其中,希望這份協議還是可以保持中立,盡可能地讓最後版本可以有效的在保護隱私的情況下完成 Cross-domain authorization 的功能。
參考資料
IETF Privacy Pass docs
Privacy Pass: The Protocol
Privacy Pass: Architectural Framework
Privacy Pass: HTTP API
Cloudflare
Supporting the latest version of the Privacy Pass Protocol (cloudflare.com)
Chinese: Cloudflare支持最新的Privacy Pass扩展_推动协议标准化
Other
Privacy Pass official website
Getting started with Trust Tokens (web.dev)
WICG Trust Token API Explainer
Non-interactive zero-knowledge (NIZK) proofs for the equality (EQ) of discrete logarithms (DL) (asecuritysite.com) 這個網站非常實用,列了很多零知識證明的源碼參考,但可惜的是 DLEQ 這個演算法講解有錯,讓我在理解演算法的時候撞牆很久。所以使用的時候請多加小心,源碼應該是可以參考的,解釋的話需要斟酌一下。
關鍵源碼
這邊我貼幾段覺得很有用的源碼。
privacy pass 提供的伺服器端產生 Proof 的源碼
privacy pass 提供的瀏覽器端產生 BlindPoint 的源碼
github dedis/kyber 產生 Proof 的源碼
[ZKP 讀書會] Trust Token Browser API was originally published in Taipei Ethereum Meetup on Medium, where people are continuing the conversation by highlighting and responding to this story.
👏 歡迎轉載分享鼓掌
c#網頁範例 在 新思惟國際 Facebook 的最佳解答
《#臨床研究與發表工作坊》(中國醫藥大學附設醫院 江長城 醫師)
🤔「課程費用三萬塊,會不會根本 C/P 值超低,上完發現錢白花了……」
🤔「平常工作都這麼累了,假日想好好休息一下……」
之前就有在網路上滑過新思惟的網頁,覺得這些課程似乎能增進自己的能力,但是卻被許多念頭阻礙。
🤩 事實是,三位講師傳授的內容都十分受用!
#吳昭慶醫師 首先講述論文各部分(標題、摘要、圖表)要注意什麼,才不會被 editor直接三振出局,進入 reviewer 的階段,以實際例子說明,十分清楚、直接。接著講述投稿中最耗費心神和時間的 revision,一樣用例子來說明 revision 的心法和小技巧,避免功虧一簣。
#吳青陽醫師 講述 reviewer 審稿時,會注意論文的哪些部分,以及主題和研究設計的原則。接著,則用打棒球比喻寫論文,十分貼切和傳神。最後依然不忘提醒我們,不要好高騖遠,「先求有,再求好」,一步步累積自己的研究結果。
而 #互動實作 有著手冊上 step by step 的帶領,讓自己從統計軟體操作的泥沼中掙脫出來,有問題也可以直接請現場助教指點迷津,不用浪費時間在「試誤學習」。
#蔡校長 則像是聽補教名師授課,清清楚楚地解釋統計互動實作的背景知識,統計製圖的講評,十分讓人受用!有了這次美妙的學習經驗,《#醫學論文與寫作工作坊》就是我下個目標了!
-
▶ 現在就預約,為明年的自己提早準備。
✓ 國際期刊 editor 與資深 reviewer 教你投稿重點!
✓ 怎麼做才最好,成敗關鍵 revision!
✓ 提供頂尖期刊範例論文,原作者讓你問!
✓ 提供過去的 revision letter,讓你學習參考!
✓ 資源稀少時代起步,給年輕伙伴的務實建議!
✓ 初學者最常用的統計,互動實作!
2021 / 1 / 10(日)臨床研究與發表工作坊
立即了解 ☛ https://clip2014.innovarad.tw/event/
-
從稿件送出,經過 editor / reviewer / revision 三關,究竟如何趨吉避凶;不講高深理論,直接從應用切入介紹統計,並實際讓你在自己的電腦上完成;初學者應該如何集中資源,避開常見誤區,我們給你務實建議。
對統計曾經擁有的害怕,我們將協助你破除,在你的電腦上,解決你的困難,讓你親手畫出多種圖表,甚至包括 ROC curve 與 Kaplan-Meier survival curve!
如果你是臨床研究者,剛剛起步,又恰好有興趣的主題偏外科系,這課程就是為你設計的。歡迎您一起來學!
-
👁🗨 課程特色
【親切大師】國際級 editor / reviewer 的論文供您閱讀,並現場提問。將從 author 到 reviewer 甚至 editor 這一路可能遇到的狀況,系統性整理,節省您的時間、節省您的精力,機會難得!
【不怕統計】素富盛名的「互動實作時間」,處理初學者最常用的無母數統計,畫出漂亮圖表,並實際操作,上手 ROC curve 與 Kaplan-Meier survival curve。在眾多助教與講師的協助下,統計不難。
【課後回饋】除了課前提問,將由講師們仔細回覆之外。課後,蔡校長也將針對您所做的統計圖表,給予建議。用資深 reviewer 的觀點,協助您從「已經是自己做得最好的圖表」,再上層樓。
c#網頁範例 在 營養師Stella Facebook 的最佳解答
[營養迷思] 補營養,食物你真的挑對了嗎?
在上一篇的營養小學堂中,維生素C含量最高的是草莓,而四個水果維生素C由高排至低分別為草莓(69.2mg)>紅葡萄柚(32.9mg)>櫻桃(10.7mg)>蘋果(2.9mg),你答對了嗎?
如果你答錯的話也不需過於沮喪,畢竟我們對於食物營養資訊的獲得,主要是來自網路、書籍、雜誌等,或聽自周遭親友或熟人的說法,我們並沒有那麼多時間去一一驗證這些說法是否正確,因此我們對食物的認知可能會受到這些訊息的誤導。舉例來說,在上一篇互動文章中比較兩種食物維生素C高低時,"紅寶石葡萄柚的維生素C是蘋果的11.3倍"這類的描述就很容易讓人誤認紅寶石葡萄柚含量非常高。為了確保關心營養補充的你能選對、補對,今天Stella要和大家來聊聊如何正確判斷某食物的營養素含量是高還是低。
▌食物X是食物Y的N倍…食物比較的陷阱!
某營養素含量高低的判斷宜以特定基礎來比較,如每日飲食建議攝取量,才能真正比出優劣。因為當隨意取兩種不同食物來比較時,很容易因做為比較的基準食物含量太低,而出現高估的結果。
例如上一篇互動文章中,拿蘋果來和紅葡萄柚比較維生素C含量高低般,會因為蘋果在眾多水果中屬於維生素C偏低的食物,因而當以蘋果為基準來比較維生素C含量時就會出現”維生素C含量為蘋果十多倍”這樣容易讓人誤以為紅葡萄柚維生素C含量非常高(高估)的感覺。
圖一拿了4種不同的水果來和紅葡萄柚比較維生素C的高低,你會發現當比較基準不同時,結果差異相當大:
範例1:紅寶石葡萄柚的維生素C是蘋果的11.3倍
範例2:紅寶石葡萄柚的維生素C是櫻桃的3.1倍
範例3:紅寶石葡萄柚的維生素C是百香果的1.03倍
範例4:紅寶石葡萄柚的維生素C是草莓的47.5%
由於我們所閱讀的文章可能因置入性行銷,或出於其他特定因素,如作者想要特別凸顯某食物的營養價值,或未經謹慎評估而拿不適合的食物來比較,使得比較結果不適當而易生誤解。因此,如果你非常在乎從食物中補充某特定營養素,或你是那種會因為某食物比較營養而願意花較多錢購買的人,建議在購買前先確認自己所接收到的資訊是正確的。換句話說,請先確認你所買的食物該營養素含量到底有多少,到底這個量是高還是低,是否有實質上的補充意義。
▌補營養,食物你選對了嗎?
那麼,我們到底該如何判斷自己所吃的食物真的如自己想像中的營養呢?很簡單,你可以拿它來和每日飲食建議攝取量比較,看看這個食物可滿足自己每日營養素需要量的多少%。
以維生素C為例,我們每日維生素C的建議攝取量為100毫克,如果你買的某食物每百公克含50毫克維生素C,那麼50/100=0.5,也就是這個食物可滿足每日維生素C需求的50%。
Stella個人認為,一個食物若能滿足每日需求40%或以上的食物你才可以說它是某營養素的良好來源;能滿足60%以上的話可說此食物富含該營養素;而如果超過100%或以上的話,代表光靠這個食物今天我們所需的該營養素就不缺了,所以可稱之為超級好食物。所以你如果因為想要特意補充某營養素,而刻意購買某食物來吃的話,請先確認它含的營養素量是否足夠喔。
[實戰方法]
一.先了解此食物該營養素含量為何?。
一般來說,如果某包裝食物有特別訴求"添加營養素XX"的話,你可在外包裝的營養標示表中看到該營養素的量。舉例,Stella在網路上看到一款訴求”添加鈣”的蘇打餅乾,外包裝上的「營養標示表」中就標示著每份(一份量31公克)含有58毫克的鈣。
如果是沒有外包裝的新鮮食物,例如你想知道紅葡萄柚的維生素C含量、葡萄乾的鐵含量,或雞胸肉的維生素B1含量等,你可以到衛服部的「食品營養成分資料庫」網頁查詢。這個資料庫中有2000多種台灣常見食物的基本營養資料,包括熱量、醣類、蛋白質、脂肪、維生素、礦物質、膳食纖維、膽固醇等。
二.計算此營養素含量為每日建議攝取量的多少%!
營養補充的目的是補不足,所以我們需要確認此食物的營養素含量足以滿足你對該營養素的每日需求。
你同樣可到衛服部網站查到「國人膳食營養素參考攝取量(DRIS)」。這個表格是依照年齡、性別來分,表列出不同年齡層熱量、蛋白質及一些常見維生素、礦物質的每日建議攝取量。藉由和此表中該營養素每日的需要量比較,你便可輕易了解該食物是否為此營養素的良好來源食物。為了方便大家使用,Stella摘錄了19歲以上成人對維生素、礦物質的每日建議攝取量,做了一個簡表供大家參考(圖二)。
舉例,從此表可查得19歲以上每日維生素C的需要量為100毫克,而紅葡萄柚每百公克含維生素C為32.9mg(從「食品營養成分資料庫網頁」查得),所以每百公克紅葡萄柚可滿足我們每日維生素C需要量的32.9%。不過因為紅葡萄柚一顆約重215~300公克,所以一顆紅葡萄柚的維生素C約可滿足每日維生素C需求的70%~100%。因此我們可判斷紅葡萄柚還算是不錯的維生素C補充來源(畢竟,大部分人一次都是吃一顆葡萄柚啊^O^)。
再舉例,從此表可得知19歲以上每日鈣需要量為1000毫克,上述添加鈣的蘇打餅乾每包含58毫克的鈣,所以吃一包這款餅乾可滿足每日鈣需求的5.8%。因此,我們可判定這個餅乾並非補鈣的良好來源食物。
總結來說,我們必須從食物中獲得身體所需營養,來滿足身體汰舊換新與新陳代謝的需求,所以”某食物含營養素X”,不代表其含量足以滿足身體每日需求;而” 食物X的某營養素含量是食物Y的數倍”也不代表食物X就是此營養素的良好來源。想要真正地補健康而非補心安,我們需要選對、挑對適合的食物,而透過了解此食物特定營養素的量能滿足每日飲食建議量的多少%,我們就能判斷此食物是否真的是補充此營養素的好食物。