Skip to content

Commit b9f0e3a

Browse files
authored
Enhance the README text
1 parent ebd11dd commit b9f0e3a

File tree

1 file changed

+36
-41
lines changed

1 file changed

+36
-41
lines changed

README.md

Lines changed: 36 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
[![License: GPL v3](https://img.shields.io/badge/License-GPL%20v3-blue.svg)](LICENSE)
44
[![CI](https://github.com/cobilab/cryfa/actions/workflows/ci.yml/badge.svg)](https://github.com/cobilab/cryfa/actions/workflows/ci.yml)
55

6-
Cryfa is an ultrafast secure encryption tool for genomic data, that is also able to compact FASTA/FASTQ sequences by a factor of three.
6+
Cryfa is an ultrafast encryption tool specifically designed for genomic data. Besides providing robust security, it also compresses FASTA/FASTQ sequences by a factor of three, making it an efficient solution for managing genomic data.
77

88
# Installation
99

@@ -49,72 +49,71 @@ cd cryfa;
4949
sh install.sh;
5050
```
5151

52-
> [!note]
53-
> Pre-compiled versions of Cryfa are available for 64 bit Linux OS and macOS in the `bin/` directory.
52+
> [!NOTE]
53+
> Pre-compiled versions of Cryfa, optimized for 64-bit Linux and macOS, can be found in the `bin/` directory.
5454
5555
# Usage
5656

57-
If you want to run Cryfa in stand-alone mode, use the following command:
57+
To execute Cryfa in stand-alone mode, utilize the command below:
5858

5959
```bash
6060
./cryfa [OPTION]... -k [KEY_FILE] [-d] [IN_FILE] > [OUT_FILE]
6161
```
6262

63-
For example, to compact & encrypt, run
63+
For instance, to compact and encrypt data, execute the following command:
6464

6565
```bash
6666
./cryfa -k pass.txt in.fq > comp
6767
```
6868

69-
and to decrypt & unpack, run
69+
To decrypt and unpack the data, execute the command below:
7070

7171
```bash
7272
./cryfa -k pass.txt -d comp > orig.fq
7373
```
7474

75-
There is a copy of file "in.fq" in `example/` directory. Options are described in the following sections.
75+
A sample file, "in.fq", is available in the example/ directory. Detailed descriptions of the options are provided in the subsequent sections.
7676

77-
> [!warning]
78-
> The maximum file size supported by Cryfa is 64 GB. For larger files, you can split them, e.g. by "split" command in Linux, and encrypt each chunk. After the decryption, you can concatenate the chunks, e.g. by "cat" command.
77+
> [!NOTE]
78+
> Cryfa supports a maximum file size of 64 GB. For larger files, consider splitting them into smaller chunks, e.g. using the `split` command in Linux, and then encrypt each chunk separately. After decryption, you can reassemble the chunks using the `cat` command.
7979
8080
## Input file format
81-
82-
Cryfa automatically detects a genomic data file format by looking inside the file and not by the file extension. For example, a FASTA file, say “test”, can be fed into Cryfa as "test", "test.fa", "test.fasta", "test.fas", "test.fsa" or any other file extension. By this explanation, running
81+
Cryfa identifies the format of a genomic data file by examining its content, not its extension. For instance, a FASTA file named "test" can be input into Cryfa with any extension, such as "test", "test.fa", "test.fasta", "test.fas", "test.fsa", etc. Based on this, executing the command
8382

8483
```bash
8584
./cryfa -k pass.txt test > comp
8685
```
8786

88-
will be exactly the same as running
87+
is equivalent to running
8988

9089
```bash
9190
./cryfa -k pass.txt test.fa > comp
9291
```
9392

94-
> [!note]
95-
> The password file is not limited to any extension, therefore, it can have either no extension or any extension. For example, using "pass", "pass.txt", "pass.dat", etc provides the same result.
93+
> [!NOTE]
94+
> The password file extension is not a limiting factor for Cryfa. It can have any extension or even no extension at all. For instance, "pass", "pass.txt", "pass.dat", and so on, are all valid and yield the same result.
9695
97-
## Comparing Cryfa with other methods
96+
## Benchmarking Cryfa Against Other Methods
9897

99-
If you want to compare Cryfa with other methods, set the parameters in **run.sh** bash script, then run it:
98+
To benchmark Cryfa against other methods, configure the parameters in the **run.sh** bash script and execute it:
10099

101100
```bash
102101
./run.sh
103102
```
104103

105-
With this script, you can download the datasets, install the dependencies, install the compression and encryption tools, run these tools, and finally, print the results.
104+
This script automates the process of downloading datasets, installing dependencies, setting up compression and encryption tools, executing these tools, and finally, displaying the results.
106105

107106
# Options
108107

109-
To see the possible options, type:
108+
To explore the available options in Cryfa, execute the command below:
110109

111110
```bash
112111
./cryfa
113112
```
114113

115-
which provides the following:
114+
which will yield the following:
116115

117-
```text
116+
```
118117
SYNOPSIS
119118
./cryfa [OPTION]... -k [KEY_FILE] [-d] [IN_FILE] > [OUT_FILE]
120119
@@ -161,66 +160,62 @@ OPTIONS
161160
version information
162161
```
163162

164-
Cryfa uses standard ouput stream, hence, its output can be directly integrated with pipelines.
163+
Cryfa leverages the standard output stream, allowing seamless integration with existing data processing pipelines.
165164

166-
## Making a key file
165+
## Creating a Key File
167166

168-
There are two methods to make a "KEY_FILE", in order to pass to the `-k` or `--key` flags, either saving a raw password in a file, or, employing the "keygen" program, which is provided to generate a strong password. The second method is highly recommended.
167+
There are two approaches to create a "KEY_FILE" that can be used with the `-k` or `--key` flags. You can either save a raw password in a file or use the provided "keygen" program to generate a robust password. The latter method is strongly recommended for enhanced security.
169168

170-
To apply the first method, the following commands can be used to save a raw password in a file, then passing it to Cryfa. In this case, "Such a strong password!" is our raw password and "pass.txt" is the file where we save our password. For the purpose of saving a password in a file, a text editor can also be used:
169+
To utilize the first method, use the commands below to save a raw password in a file, which can then be passed to Cryfa. In this example, "Such a strong password!" is the raw password and "pass.txt" is the file where the password is stored. Alternatively, you can use a text editor to save the password in a file:
171170

172171
```bash
173172
echo "Such a strong password!" > pass.txt
174173
./cryfa -k pass.txt IN_FILE > OUT_FILE
175174
```
176175

177-
Note that the password must include at least 8 characters. Although, employing this
178-
method is not recommended, but if you tend to use it, it would be a better
179-
practice to choose a "strong password".
180-
181-
A strong password:
176+
While the password must contain at least 8 characters, it's highly recommended to use a strong password for better security. A strong password:
182177

183-
* has at least 12 characters;
184-
* includes lowercase letters (a-z), uppercase letters (A-Z), digits (0-9) and symbols (e.g. !, #, $, % and });
185-
* is not a character repetition (e.g. zzzzzz), keyboard pattern (e.g. qwerty) or digit sequences (e.g. 123456).
178+
- Is at least 12 characters long
179+
- Includes a mix of lowercase (a-z) and uppercase (A-Z) letters, digits (0-9), and symbols (e.g., !, #, $, %, and })
180+
- Is not a simple repetition of characters (e.g., zzzzzz), a keyboard pattern (e.g., qwerty), or a sequence of digits (e.g., 123456)
186181

187-
The second method to make a key file is using the "keygen" program, which automatically provides a strong password. Running
182+
Alternatively, you can leverage the "keygen" program to automatically generate a robust password. To do this, execute:
188183

189184
```bash
190185
./keygen
191186
```
192187

193-
the following message appears:
188+
You'll be prompted with:
194189

195190
```text
196191
Enter a password, then press 'Enter':
197192
```
198193

199-
After typing a raw password, e.g. "A keygen raw pass!", and pressing "Enter", the following message appears:
194+
At this point, input a raw password, for example, "A keygen raw pass!", and press "Enter". Subsequently, you'll see:
200195

201196
```text
202197
Enter a file name to save the generated key, then press 'Enter':
203198
```
204199

205-
The automatically generated strong password will be saved in the file that you specify its name, e.g. "key.txt", in this step. Note, the "keygen" program needs an initial raw password, which is not required to be strong itself, to generate a strong password. Afterward, you can use the following command to pass the key file, in this case "key.txt", to Cryfa:
200+
The robust password generated by the "keygen" program will be stored in the file you specify, such as "key.txt". Note that "keygen" requires an initial raw password to generate a strong password, but this initial password doesn't need to be particularly strong. Once the key file is created, you can use it with Cryfa as shown below:
206201

207202
```bash
208203
./cryfa -k key.txt IN_FILE > OUT_FILE
209204
```
210205

211-
If you are interested in the topic of "key management", which is to deal with generating, exchanging, storing, using and replacing keys, you can read the articles [[1]](https://en.wikipedia.org/wiki/Key_management), [[2]](https://info.townsendsecurity.com/definitive-guide-to-encryption-key-management-fundamentals), [[3]](https://csrc.nist.gov/projects/key-management/cryptographic-key-management-systems) and [[4]](https://www.cryptomathic.com/news-events/blog/what-is-key-management-a-ciso-perspective).
206+
For a deeper understanding of "key management" - which encompasses the generation, exchange, storage, usage, and replacement of keys - consider exploring [[1]](https://en.wikipedia.org/wiki/Key_management), [[2]](https://info.townsendsecurity.com/definitive-guide-to-encryption-key-management-fundamentals), [[3]](https://csrc.nist.gov/projects/key-management/cryptographic-key-management-systems) and [[4]](https://www.cryptomathic.com/news-events/blog/what-is-key-management-a-ciso-perspective).
212207

213208
# Citation
214209

215-
Please cite the followings, if you use Cryfa:
210+
If you utilize Cryfa in your research, please acknowledge the tool by citing the following references:
216211

217-
* M. Hosseini, D. Pratas and A.J. Pinho, "Cryfa: a secure encryption tool for genomic data," *Bioinformatics*, vol. 35, no. 1, pp. 146--148, 2018. [DOI: 10.1093/bioinformatics/bty645](https://doi.org/10.1093/bioinformatics/bty645)
218-
* **[OPTIONAL]** D. Pratas, M. Hosseini and A.J. Pinho, "Cryfa: a tool to compact and encrypt FASTA files," *11'th International Conference on Practical Applications of Computational Biology & Bioinformatics* (PACBB), Springer, June 2017. [DOI: 10.1007/978-3-319-60816-7_37](https://doi.org/10.1007/978-3-319-60816-7_37)
212+
- M. Hosseini, D. Pratas and A.J. Pinho, "Cryfa: a secure encryption tool for genomic data," *Bioinformatics*, vol. 35, no. 1, pp. 146--148, 2018. [DOI: 10.1093/bioinformatics/bty645](https://doi.org/10.1093/bioinformatics/bty645)
213+
- **[OPTIONAL]** D. Pratas, M. Hosseini and A.J. Pinho, "Cryfa: a tool to compact and encrypt FASTA files," *11'th International Conference on Practical Applications of Computational Biology & Bioinformatics* (PACBB), Springer, June 2017. [DOI: 10.1007/978-3-319-60816-7_37](https://doi.org/10.1007/978-3-319-60816-7_37)
219214

220215
# Codebase
221216

222217
![Visualization of this repo](./diagram.svg)
223218

224219
# License
225220

226-
Cryfa is under [GPLv3](http://www.gnu.org/licenses/gpl-3.0.html) license.
221+
Cryfa is licensed under the [GPLv3](http://www.gnu.org/licenses/gpl-3.0.html).

0 commit comments

Comments
 (0)